Java 父类是否可以有一个字段,其泛型类型为当前子类的泛型类型?
两类:Java 父类是否可以有一个字段,其泛型类型为当前子类的泛型类型?,java,generics,Java,Generics,两类: 实体(抽象类) 动物(实体的子实体) 接口: 公共接口iPositonObserver{ 职位变更时的公共无效(T实体,向量2从,向量2到); } 我希望Entity实现这个接口,这样它的所有后代都可以被自动观察,但是我希望T被解析为最派生的类。也就是说,如果我创建一个Animal实例,我希望它的函数看起来像onPositionChange(Animal entity,Vector2 from,Vector2 to) 这可能吗?是的 class Parent<C extend
(抽象类)实体
(实体的子实体)动物
公共接口iPositonObserver{
职位变更时的公共无效(T实体,向量2从,向量2到);
}
我希望Entity
实现这个接口,这样它的所有后代都可以被自动观察,但是我希望T
被解析为最派生的类。也就是说,如果我创建一个Animal
实例,我希望它的函数看起来像onPositionChange(Animal entity,Vector2 from,Vector2 to)
这可能吗?是的
class Parent<C extends Parent<C>> {
C field;
}
class Child extends Parent<Child> {
}
类父类{
C场;
}
类子级扩展父级{
}
Child.field
属于Child
类型。虽然人们会认识到这种模式,并理解他们应该执行扩展父项
,但需要注意的是,编译器不会强制执行这种模式。例如,类Foo扩展父级
编译。@Sweeper,实际上,如果您扩展了子级
,说类孙级扩展子级
,那么孙级
是一个父级
,而不是父级
。