2012-03-28 38 views
1

在下面的設計示例中,data由於未被使用而被給出警告。有人可以解釋爲什麼這是警告的東西嗎?Eclipse在抽象類中警告「變量未被使用」?

public abstract class Worker { 

    private Object data; 

    public Worker(Object data) { 
     this.data = data; 
    } 

    public abstract Result run(); 

} 

當然,這個數據對象是使用的,只是不在這個抽象類中。我應該怎麼做才能讓這個錯誤消失,也就是說它是一個日食設置,還是我只是在做錯誤的事情。

回答

10

課程的點,是數據對象被使用,只是沒有在這個抽象類。

怎麼樣?它是私人的。除非使用反射,否則子類將無法看到它。

可以使其protected,這樣子類可以看到它 - 或者更好(IMO),提供一個受保護的getData()方法。

+0

想知道爲什麼你建議一個受保護的'getData()'方法會更好? – Jacob 2012-03-28 11:22:28

+0

@Jacob:我將字段視爲一個實現細節,不應該在非常例外的情況下非私下暴露。 – 2012-03-28 11:36:06

1

找到答案!因爲這些變量被聲明爲private他們不能被這個類的後代使用。它們需要聲明protected

3

該變量對類是私有的,所以實際上不能被任何子類型訪問。既然你只是在你的構造函數中分配它,Eclipse會警告你它沒有被使用。

如果變量被子類型使用,則開始擴展其可見性或添加getter/setter。如果不使用該類型,則不應將其傳入構造函數中。

相關問題