0

重複の可能性:
リフレクションを使用してクラスをロードし、実行時に変数を編集します

さて、別のクラスをロードしているJavaファイルがあり、実行中のクラスから変数を編集および読み取ることができるようにJavaファイルが必要です。

例:ボタンを押すと変数を設定します(これはクラスファイルです)。このクラスをロードしているJavaファイルで、変数の新しい値を確認して読み取り、設定し、必要な処理を実行できるようにする必要があります。そして、実行中のJavaクラスに表示されるように設定された新しい値が必要です。

これは私がこれまでに試したことですが、baseXを取得するなどの値を編集しようとすると、実行中のクラスに表示されません。また、実行中のクラスで処理を行うとbaseX値が変更されるはずですが、変更しても画面に出力されません。それは、リフレクションが実行時にものを読み取ることができないかのようです。では、何をしますか?

        Class c = Class.forName("Client");
        for (Method m : c.getMethods()) {
            if (m.getName().contentEquals("main")) {
                Object[] passedArgs = { args };
                m.invoke(null, passedArgs);
            }

        }
        Object instance = c.newInstance();

        Field baseX = c.getField("baseX");
        Field loggedIn = c.getField("loggedIn");

        boolean gotValues = false;
        while(!gotValues) {
            boolean loggedin = loggedIn.getBoolean(instance);
            if(loggedin) {
                System.out.println(baseX.get(instance));
            } else {
                System.out.println(loggedin);
                loggedIn.setBoolean(instance, true);
            }
        }

また、ゲッター/セッターメソッドはランタイムで機能する場合は機能し、ボタンxが押されたときに変数yが画面上で変化するようにすることができます。Java Beanとは何ですか?また、メソッドを呼び出して値を取得したくない場合はどうなりますか?または、独自のメソッド/コードを追加したい場合はどうなりますか?

4

0 に答える 0