2017-04-01 61 views
1

具有int值的setters稱int不能被解除引用,並且string值找不到該方法。我可能不完全理解,但他們看起來很好。我正在嘗試遵循NetBeans命名約定,但它不會編譯?

請指教,謝謝!

private void setMachineID(int machineID) { 
     machineID.set(machineID); 
    } 

    public int getMachineID(){ 
     return machineID.get(); 
    } 

    public IntegerProperty machineIDProperty(){ 
     return machineID; 
    } 
} 
+0

嘗試刪除最後一個關鍵的字 –

+0

謝謝,我試過了,但它沒有解決問題。 –

回答

2

您對字段和方法參數使用相同的標識符。

如果在代碼的一部分中存在多個具有相同標識符可見的變量,那麼java將使用聲明爲「更接近」這部分代碼的變量。

在這種情況下,方法參數的範圍是比字段更接近方法體的方法。出於這個原因,你必須明確地告訴java你想使用該字段,而不是方法參數。

您需要添加更改您的setter方法是這樣的:

以前

private void setMachineID(int machineID) { 
    machineID.set(machineID); 
// ^^^^^^^^^     references method parameter 
//    ^^^^^^^^^  references method parameter 
} 

private void setMachineID(int machineID) { 
    this.machineID.set(machineID); 
// ^^^^^^^^^^^^^^     References field 
//      ^^^^^^^^^  references method parameter 
} 
+0

謝謝,這很好! –

相關問題