在Java中扩展泛型类型

th3*_*c0n 3 java generics code-injection

在Java中是否可以让类扩展泛型类型,以便您可以将方法注入到通过代码传递的任何类中?(或者有没有其他方法可以使用Java将方法注入或覆盖到现有类中?)

我对"扩展泛型类型"的意思是这样的(类"T extends GameObject"属于游戏,可能不会被更改并且因为在运行时加载到游戏中而未知(来自其他mod)):

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

onTick由GameEngine调用,通过这种方式,我可以使用在每个tick上向后移动的版本替换每个现有游戏对象.

Mik*_*ike 8

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

  • 我知道代码是错的,问题是有没有其他方法可以做到这一点! (2认同)