在Java中扩展泛型类型

时间:2013-01-25 15:47:08

标签: java generics code-injection

在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调用,通过这种方式,我可以用每个滴答都向后移动的版本替换每个现有的游戏对象。

2 个答案:

答案 0 :(得分:8)

没有。您无法扩展通用超类型。您可以扩展使用泛型类型的类(例如public class MyClass<T> extends TheirClass<T>),但不能扩展纯泛型类型。

答案 1 :(得分:0)

在我看来,您可以找到解决方案而不是语言的功能,但在某些设计模式中,可以找到DecoratorTemplate Method Pattern

如果在运行时确定了行为,您可以查看behaviour patterns