0

これは不可能だと確信していますが(これは非常にひどいプログラミング手法であると考えると)、とにかく質問します。

Javaでは、ドット演算子を使用してメソッド名(または他の何か)の代わりに文字列を使用する方法はありますか?

例:java.stringname.NumericShaper(); ここで、stringname = "awt.font"

私はいくつかの反復コードを反復ループに入れようとしています。たとえば、私の変数の1つは「Settings.can1.baud」であり、ループを通過するたびに「can1」の部分を繰り返したいと思います。おそらくこれを行うためのより良い方法がありますか?

私はJavaプログラミングに慣れていないので、それが意味をなすかどうかはわかりません...

4

2 に答える 2

2

can1、、、などと呼ばれるメンバーがたくさんある場合は、can2代わりに配列またはコレクションcan3を使用する必要があります。

リフレクションを使ってやりたいことができます。しかし、それは厄介で、悪い習慣であり(多くの場合)、この場合は不要です。

于 2012-05-11T20:22:25.920 に答える
2

リフレクションを使用してこれを行うことができます。

try {   

        //loop over stringnames?
        String stringname = "awt.font";
        Class<?> numericShaperClass = Class.forName("java." + stringname + ".NumericShaper");


        NumericShaper numericShaper = (NumericShaper) numericShaperClass.newInstance();

    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
}

質問の 2 番目の部分については、Class.getField() メソッドを使用して Properties クラスのメンバー変数にアクセスできます。

この状況でリフレクションを使用するのはやり過ぎかもしれません。かなり読みにくく、場合によっては遅いコードになる可能性があります。

于 2012-05-11T20:25:12.040 に答える