2016-09-14 65 views
1

是否有關於下面兩個選項獲取變量,在這種情況下,MainScene類的最佳做法?實際上我有更多的變量可以得到,所以我最終會得到許多其他方法或者2-3個切換方法。JAva獲取類變量:多種方法或一種方法與開關

類MainScene

選項1 - 多種方法

public TextField getLoadTxt(){ 
    return loadTxt; 
} 

public TextField getdownTxt(){ 
    return downTxt; 
} 

public TextField getflightTxt(){ 
    return flightTxt; 
} 

public TextField getacTxt(){ 
    return acTxt; 
} 

public TextField getairportTxt(){ 
    return airportTxt; 
} 

選項2 - 一個具有開關

public TextField getTextField(String textField){ 
    TextField text = new TextField(); 
    text.setText("Default"); 
    switch(textField){ 
     case "loadTxt": return loadTxt; 
     case "downTxt": return downTxt; 
     case "flightTxt": return flightTxt; 
     case "acTxt": return acTxt; 
     case "airportTxt": return airportTxt; 
     default: return text; 
    } 
} 
+1

通常選擇1,和大多數(全部?)IDE可以自動生成setter方法/ getter方法。 –

+0

你應該重新發布作爲答案,我會選擇它。 – neilnm

回答

1

一般方案1中,一種方法nd大多數(所有?)IDE都可以自動生成setter/getter方法。另外,如果你讓IDE做所有的工作,更容易和更少的引入錯誤的機會。

1

一般而言,每個變量應該有一個「getter」方法。但是,如果你有代表同一類型的不同屬性變量數量較多,那麼你可能要考慮使用屬性枚舉:

public enum Field { 
    LOAD, DOWN, FLIGHT, AC, AIRPORT; 
} 

public MainScene { 
    private final EnumMap<Field,TextField> fields = new EnumMap<>(Field.class); 

    public TextField getField(Field field) { 
     return fields.get(field); 
    } 
} 
2

對於選項1,您可以使用龍目島,這有助於生成所有吸氣劑功能。對於選項2,您可以使用反射。

如果使用Maven,包括

<dependency> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok</artifactId> 
    <version>1.14.8</version> 
</dependency> 

和下面的代碼:

import lombok.Data; 
public @Data 
class ReflectionTest { 
    String str = "abc"; 

    String str2 = "ecd"; 

    public void get() { 
     try { 
      System.out.println(this.getClass().getDeclaredField("str").get(this)); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

public class App { 
    public static void main(String[] args) { 
     ReflectionTest reflectionTest = new ReflectionTest(); 
     // get value by option 2 
     reflectionTest.get(); 
     // get value by option 1 
     System.out.println(reflectionTest.getStr2()); 
    } 
} 
相關問題