关于以下两个选项是否有最佳实践来获取变量,在本例中是MainScene类?我实际上有更多的变量,所以我最终会得到许多其他方法或2-3种切换方法。
类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;
}
}
答案 0 :(得分:2)
对于选项1,您可以使用lombok,它有助于生成所有getter函数。对于选项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());
}
}
答案 1 :(得分:1)
通常选项1和大多数(全部?)IDE可以自动生成setter / getter方法。
此外,如果你让IDE完成所有工作,那么引入错误的机会就会更容易,也就更少。
答案 2 :(得分:1)
一般来说,你应该有一个“吸气者”。每个变量的方法。但是,如果您有大量代表相同类型的不同属性的变量,那么您可能需要考虑使用属性枚举:
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);
}
}