2016-09-14 57 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()); 
    } 
} 
相关问题