2012-02-02 77 views
0

是否可以通過簡單地使用構造函數的參數實例化類來設置類變量?你可以在構造函數方法參數中設置類變量嗎?

的僞代碼

public class Employee { 
    String first_name; 
    String last_name; // can this be set automatically from the parameter of the constructor function without having to explicitly set it? 

    public Employee (String firstName, String lastName) { 
     first_name = firstName; // is there a way to avoid having to type this? 
     last_name = lastName; 
    } 
} 
+0

是的。你可以在構造函數中初始化類的變量。 – 2012-02-02 23:06:32

+0

否(至少,沒有反射,我認爲這不是一個選項)。至多,您可以在字段聲明中提供默認值('String first_name =「John」;'),但是您需要以某種方式指示JVM如何將值分配給字段(您可能想要交換ctor參數,對吧?) – 2012-02-02 23:07:58

+0

@RaviG:AFAIU,問題是自動將ctor參數值複製到對象字段中(根據代碼中的註釋。 ) – 2012-02-02 23:09:33

回答

2

不行,你必須明確地設置它。

但是,許多IDE(如Eclipse)允許您編寫字段聲明,然後自動生成設置它們的構造函數。

(注:我會建議你做場private,也final在可能此外,避免在標識符下劃線。)

+0

*然後自動生成設置它們的構造函數。* ...然後重新排列參數順序[手動] :) – bestsss 2012-02-02 23:08:40

+0

@bestsss:那麼,Eclipse可以在生成構造函數IIRC之前手動對它們進行排序... – 2012-02-02 23:09:35

+0

哇,Jon Skeet回覆了!好的謝謝。 :) – 2012-02-02 23:11:01

0

或許你可以在Java中獲得儘可能是最接近的是:

public static Employee createEmployee(
    final String firstName, final String lastName 
) { 
    return new Employee() { 
     // methods using firstName and lastName 
    } 
} 

(其中Employee是一些相關的接口)

真夠當你在現代語言,如西穆拉。 ;)

相關問題