2016-09-14 8 views
1

ここでは、MainSceneクラスから変数を取得するための2つのオプションについてベストプラクティスがありますか?実際にはもっと多くの変数があるので、他の多くのメソッドや2-3のスイッチメソッドで終わることになります。JAVA getクラス変数:複数のメソッドまたは1つのメソッド(スイッチあり)

クラス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はセッター/ゲッターメソッドを自動生成することができます。 –

+0

あなたは答えとして再投稿する必要があります、私はそれを選択します。 – neilnm

答えて

1

通常オプション1、の一つの方法ほとんどのIDEはsetter/getterメソッドを自動的に生成できます。

また、IDEにすべての作業をやらせると、バグが導入される可能性が低くなります。

1

一般に、変数ごとに1つの「ゲッター」メソッドが必要です。あなたは、あなたが属性の列挙を使用して検討する必要があり、同じタイプの異なる属性を表す変数をより多く持っている場合は:オプション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); 
    } 
} 
2

を、あなたはすべて生成するのに役立ちますロンボクを、使用することができますゲッター関数。オプション2では、リフレクションを使用できます。

ここ

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

を含むと、Mavenを使用している場合は、コードです:

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()); 
    } 
} 
関連する問題