2017-11-25 3 views
0

同じ名前の静的変数を持つ5つのクラスを作成しました。1つの識別子を使用して複数のクラスのフィールドにアクセスする方法

class A 
{ 
public static int a; 
//other vatiables 
} 
class B 
{ 
public static int a; 
//other variables 
} 

....など。

ここで私がしたいのは、あいまいさを減らすために同じ識別子を使用してこれらの静的変数にアクセスすることです。

void printAll(String className) 
{ 
//prints all the variables of className 
} 

のようなので、私は唯一の任意の特定のクラスの値を印刷するには、この一つの方法を使用します。

リフレクションなしで行う方法はありますか?

+1

。 System.out.println(B.a); '? –

+0

問題は、同じ名前の各クラスに20個の変数があり、各クラスに対して別々のメソッドを作成しないで、すべての変数を印刷できる1つのメソッドを作成しようとしています – NoNoob

+1

各クラスに20個の静的変数それはお互いに似ているようですか?これは私にとって大きな設計上の欠陥のように思えます。 – Synch

答えて

0

リフレクションなしで行う方法はありますか?

修飾子がstaticのフィールドには、他の方法はありません。
これを反映させるには、多型機能を使用する必要があります。
これはインスタンスメソッドでのみ使用できます。

としては、あなたがstaticフィールドに依存しているint getA()インスタンスメソッドを定義することができますし、aフィールドを持つ任意のクラスにメソッドを呼び出すことができるように、インタフェースのこのインスタンスメソッドを定義し回避します。

インタフェース:

public interface CommonData{ 
    int getA(); 
} 

クラスA:

class A implements CommonData { 

    public static int a; 

    public int getA(){ 
    return int a; 
    } 
} 

クラスB:あなたは `のSystem.out.println(aの化合物。表を)やって防ぐ何

class B implements CommonData { 

    public static int a; 

    public int getA(){ 
    return int a; 
    } 
} 
+0

私は質問を修正しました。あなたが望むものを理解することを願っています。 – NoNoob

関連する問題