簡體   English   中英

在Java中擴展泛型類型

[英]Extend a generic type in Java

在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;
    }
}

onTick由GameEngine調用,通過這種方式,我可以使用在每個tick上向后移動的版本替換每個現有游戲對象。

不可以。您無法擴展通用超類型。 您可以擴展使用泛型類型的類(例如, public class MyClass<T> extends TheirClass<T> ),但不能擴展純泛型類型。

在我看來,你可以找到解決方案不是語言的功能,而是在一些設計模式,如裝飾器模板方法模式

如果在運行時確定行為,則可以查看行為模式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM