在抽象類中是否有可能「一般」返回擴展它的類的實例?抽象類中的方法返回實現它的類的實例
0
A
回答
1
這僅僅是提供一些額外的信息,並回答在評論你的問題。鑑於你的問題中的信息,Kayaman的回答正是我所建議的。
但是,正如您暗示您的評論問題,此方法將只調用默認的構造函數。爲了調用其中一個參數化構造函數,您需要使用getDeclaredConstructor
方法通過其簽名來有效「定位」它。
像這樣(從Kayaman的答案借用):
public abstract class AbstractClass {
public AbstractClass getInstance(Object[] parameters, Class<?>...parameterTypes) {
return getClass().getDeclaredConstructor(parameterTypes).newInstance(parameters);
}
}
確保課程,元素的parameters
和parameterTypes
的順序對應的構造函數的簽名。
3
你可以用下面的方式實例化這個類,但也許你應該告訴我們你想要實現的。另一種更簡單的方法可能是實施Clonable
。
public abstract class AbstractClass {
public AbstractClass getInstance() {
return getClass().newInstance();
}
}
或在構造函數中接受參數的情況下:
return getClass().getDeclaredConstructors(String.class, Integer.class).newInstance(someString someInteger);
相關問題
- 1. 抽象類/方法實現
- 2. 返回類的實例的抽象方法
- 3. 返回派生類實例的抽象方法
- 4. 如何編寫一個返回抽象類實例的方法?
- 5. 實現抽象方法與返回類型的自我
- 6. 從抽象父類中的方法返回具體子類的實例
- 7. 如何讓抽象方法返回具體實現的抽象類型?
- 8. 以抽象類作爲參數的Java方法返回子類的實例
- 9. 在java中實現抽象方法/類
- 10. 如何指定的抽象方法的返回類型爲實現類型
- 11. 從Java中的抽象類實施實例變量的實現
- 12. 實例化的抽象類
- 13. 實例化的抽象類
- 14. 實現抽象方法返回類型<T1<T2>>
- 15. 抽象類實例
- 16. 返回子類實例的父方法
- 17. 沒有錯誤,而實例化抽象類,雖然抽象方法未實現
- 18. 的getClass()在抽象類返回隨機實現類
- 19. 接口 - 實現抽象類方法
- 20. 非抽象類不提供抽象方法的實現
- 21. 抽象類抽象方法的部分實現
- 22. 無法創建抽象類的實例
- 23. 實現抽象類的優雅方式
- 24. 在抽象類中使用抽象類時如何實現抽象方法
- 25. 在實現的抽象方法中調用超類方法
- 26. 抽象方法覆蓋,在java中實現不同的返回類型
- 27. XStream的:無法實現抽象類
- 28. 無法在接口方法中創建抽象類的實例
- 29. 在抽象類中實現的方法,但出現在接口
- 30. Ruby - 返回實例並修改該實例的類方法
如果抽象類有一個帶參數的構造函數呢?我可以通過他們與上述,因爲實施類肯定會做超(arg1,arg2) – user3236409
更新構造函數... – Kayaman