是否有人面臨這樣的問題?該字段永遠不會在本地讀取(catch-22)
某些字段標有警告 「這個領域是從來沒有在本地讀」:
但是當我抑制警告,它Eclipse啓動聲稱,這是不必要的:
因此,我無法擺脫警告。
的Eclipse SDK 3.6.2
編輯:
意圖是抽象的BlockBase類。但將abstract
關鍵字添加到類中並將構造函數的可見性更改爲protected
不會改變任何內容。我猜這種行爲的真正原因是類市場是私有的,因此編譯器假定應該從類可見區域內部訪問字段。它沒有考慮到這些字段可能會從具有另一可見性的子項訪問(public class DataBlock extends BlockBase
)。
我改變了BlockBase
對protected
的知名度和它解決了的問題。我不喜歡將其更改爲公開,因爲這會導致BlockBase
將從父類外部可見,但將可見性更改爲protected
不會更改任何內容,因爲我的父類沒有繼承類。
但無論如何,這種編譯器行爲是不正確的。
編輯2
- 或 -
如何重現問題
1.第一文件:
public class testClass {
private abstract class x
{
public int theProblem;
}
public class y extends x
{
}
}
2.第二個文件:
public class anotherClass {
public void accessToTheProblem()
{
testClass.y a = (new testClass()).new y();
a.theProblem = 5;
Log.i("TEST", "See, I can read theProblem: " + a.theProblem);
}
}
下的Eclipse SDK 3.6.2,你會看到theProblem
宣言市場警告:
領域是從來沒有在本地讀
難道你不能只讀他們的地方?我的意思是假的讀他們。例如在一個構造函數中。這不是最優雅的解決方案,但哦。 – SmartK8
如果您不想使用它們,請輸入私有的getter和setter? – Kaediil
除此之外。警告可能是有效的,所以你不應該壓制它,而是記住未使用的字段,並優化它們或將來使用它們。 – SmartK8