2014-01-18 31 views
0

爲什麼佈局參數需要聲明爲最終?JavaFX傳遞佈局作爲參數

如下:

@Override 
    public void start(Stage primaryStage) { 
     primaryStage.setTitle("Login form"); 

     BorderPane borderLayout = new BorderPane(); 
     borderLayout.setCenter(login(borderLayout)); 


     Scene scene = new Scene(borderLayout, 300, 275); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

private GridPane login(final BorderPane rootLayout){ //<<-- 
    // CODE 
    return grid; 
} 

編輯:最後的BorderLayout shud've一直BorderPane。

+0

查看這裏的相同問題的答案http://stackoverflow.com/questions/4930114/why-declare-a-function-argument-to-be-final – csmckelvey

+0

爲什麼你會使用'BorderLayout'?另外,你是否意識到你正在通過'BorderPane'實例登錄方法而不是'BorderLayout'實例 –

+0

@ csmckelvey謝謝!當然有道理,但我在登錄方法裏面做的實際上是在做rootLayout.setCenter(otherMethod(rootLayout)),或者這不是你的意思嗎?因爲它確實不會限制我這樣做。 – Taerus

回答

3

從用戶templatetypedef摘自:

有你可能想標記一個最終的說法主要有兩個原因。首先,如果您打算在匿名內部類中使用參數,那麼您必須將其標記爲final,以便可以在該類中引用它。這實際上是最後標記參數的一個非常常見的用例。

標記參數最後的另一個常見原因是爲了防止自己意外覆蓋它們。如果你真的不想改變參數,那麼也許你應該把它們標記爲final,這樣如果你真的這樣做了,你會在編譯時得到錯誤,而不是在運行時發現你的代碼有錯誤。