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,实际上,如果您扩展了
子级
,说
类孙级扩展子级
,那么
孙级
是一个
父级
,而不是
父级