在扩展Java的泛型类型(Extend a generic type in Java)

2019-07-18 17:47发布

是否有可能在Java中,让一类扩展泛型类型,这样就可以注入方法引入你的代码通过任何一类? (或有任何其他方式来注入或覆盖方法与Java的现有的类?)

我的意思与“扩展泛型类型”是这样的(类“T扩展游戏物体”属于游戏可能不会改变,是未知的,因为加载到游戏在运行时(从其他MODS)):

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

Answer 1:

不,你不能扩展了一般的超类型。 您可以扩展使用泛型类(如public class MyClass<T> extends TheirClass<T>但你不能延长一个纯粹的泛型类型。



Answer 2:

在我看来,你可以找到在语言的功能解决没有,但在一些设计模式,作为装饰或模板方法模式 。

如果行为在运行时determinated,你能不能给看看的行为模式 。



文章来源: Extend a generic type in Java