我可以創建父類是動態的子類嗎?例如; class A extends B
代碼,我可以根據條件更改B
嗎?如果我可以從方法中返回它,那麼方法的返回類型是什麼?我的意思是class A extends getClassAccToCondition()
返回類型。Java繼承;從可變類型延伸
1
A
回答
0
我決定使用一種像工廠模式一樣的簡單多態性變體。它會爲我工作,我認爲。感謝您的回答。
public class Main {
public static I getClassBelongToCondition(boolean Condition) {
if (Condition) {
return new A();
} else {
return new C();
}
}
}
interface I {
}
class A extends B implements I {
}
class C extends D implements I {
}
class B {
}
class D {
}
0
不,您正在擴展的類必須明確說明。
2
由於其他答案已經說這是不可能的。
對於這種問題,您可以使用工廠模式。如果你有一個 類層次結構是這樣的:
class SuperType { ... }
class SubType1 extends SuperType {...}
class SubType2 extends SuperType {...}
你可以有一個工廠這樣的:
class Factory {
public static SuperType create (Condition cond) {
if(cond.matchForType1())
return new SubType1();
else
return new SubType2();
}
}
可以比通過Factory.create(<condition that match for the required type>)
調用此方法。
如果您搜索「工廠模式」+「java」,您會發現很多 更好的示例。
0
從技術上說,它不可能在java中實現這一點。但是,我想嘗試使用多態性和某種工廠方法模式來解決實際業務問題。不確定,如果這對你有幫助,但在java中不能實現不同的父項。
0
您不能在編譯時定義一個不是靜態類型的類。 但是,您可以在運行時生成類,請看javassist。這就是說,代碼生成不是唯一的選擇。如果您不需要動態超類,但只需要接口,則可以使用dynamic proxies。
相關問題
- 1. Java繼承 - implentation和延伸
- 2. c + +延伸繼承功能
- 3. 從基類演變爲可繼承類繼承類
- 4. JAVA:泛型類繼承和泛型類型繼承
- 5. JPA繼承和複合主鍵延伸
- 6. 什麼有關涉及繼承Java泛型和泛型的用處延伸自
- 7. Java - 從接受泛型的類繼承?
- 8. Java繼承返回類型
- 9. Java繼承和可變
- 10. 從數據類型繼承
- 11. 從Java類繼承的Kotlin類是否也從Any繼承?
- 12. 從類繼承變量
- 13. java繼承:區分繼承類的類型
- 14. 多變模型的延伸
- 15. Java繼承類
- 16. 類繼承java
- 17. Java類繼承
- 18. 類型繼承
- 19. 改變繼承類的屬性類型
- 20. Java泛型:創建延伸的類對象集合可丟失
- 21. Java泛型繼承
- 22. 我可以從泛型類繼承而不指定類型嗎?
- 23. 類可以從「參數」類繼承嗎? (有條件繼承)
- 24. 繼承Java子類
- 25. Java超類繼承
- 26. 類型繼承與表繼承
- 27. 繼承泛型類
- 28. FlowJS:類型繼承
- 29. 習慣從類型繼承元類嗎?
- 30. 類變量繼承
你看過java中的泛型? – Gleeb
您不能在運行時動態定義超類,它們必須明確定義。你做這件事的原因是什麼?也許還有另一種選擇。 –
這是關於這個問題; http://stackoverflow.com/questions/14399843/abstractregionpainter-java-7-dynamic-import – rdonuk