在Java中是否可以让类扩展泛型类型,以便您可以将方法注入到通过代码传递的任何类中? (或者有没有其他方法可以使用Java将方法注入或覆盖到现有类中?)
我对“扩展泛型类型”的意思是这样的(类“T extends GameObject”属于游戏,可能不会被更改并且因为在运行时加载到游戏中而未知(来自其他mod)): / p>
class GameObject {
void moveForward(float amount) {
this.camera.z += amount;
}
}
class Extender<T extends GameObject> extends T {
void onTick(float time) {
this.camera.z -= amount;
}
}
onTick由GameEngine调用,通过这种方式,我可以用每个滴答都向后移动的版本替换每个现有的游戏对象。
答案 0 :(得分:8)
没有。您无法扩展通用超类型。您可以扩展使用泛型类型的类(例如public class MyClass<T> extends TheirClass<T>
),但不能扩展纯泛型类型。
答案 1 :(得分:0)
在我看来,您可以找到解决方案而不是语言的功能,但在某些设计模式中,可以找到Decorator或Template Method Pattern。
如果在运行时确定了行为,您可以查看behaviour patterns。