[英]Java class hierarchy, how to implement optional variable throughout
我想知道是否存在任何“干凈”的方法來在整個類層次結構中實現一個可選變量,而不會一直將其保留為null並始終進行nullcheck。 假設我有以下抽象父類:
public abstract class Item {
public String name;
public Item(String name){
this.name = name;
}
public String getName(){
return name;
}
非常簡單。 現在,我有另一個抽象類來擴展它,還有更多抽象類來擴展這個類,每個抽象類都有自己的一些其他變量/方法。 Item也有一個擴展它的存根類(除了調用super()的構造函數外,什么也沒有),如果可以將Item做成具體的,則不需要,但這取決於解決方案。
現在,假設這些具體類中的任何一個都可能包含MyObject的實例。 將創建大量項目。 Item層次結構中任何類的某些實例都會擁有它,而某些則不會。 程序無法在編譯時告知。 我不能真正地將層次結構分為兩棵獨立但幾乎完全相同的樹,一棵有MyObject,一棵沒有。 這將導致大量的代碼重復。 用包含MyObject的另一個具體類對具體實現進行子類化將意味着過多的類型檢查,這將變得很丑陋,尤其是當層次結構增長時。 將接口/抽象類放在更高的位置也不是一種選擇,因為那樣會使MyObject出現在所有內容中。 無論采用哪種解決方案,所有這些都必須具有通用的接口/抽象類。
我可能正在挑剔,應該只在層次結構的頂部實現MyObject並對其進行nullcheck或使用一個簡單的布爾方法來告訴我它是否存在,但是對我來說仍然有點草率,我想找到一個如果可能的話,更好的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.