私はリフレクションを使用して実行中のJavaアプリケーションのフィールドを取得するプロジェクトに取り組んでいます。Javaのリフレクトに関する質問
私はフィールドを取得することができましたが、私はそのフィールドを読み書きできません。
Class aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
field.set(objetInstance, value);
問題は、私が実行しているjarファイルからクラスを使用することで、私が操作しようとするクラスがクラスローダから取得されています。これは私がウェブ上で発見例です。だから 'MyObject.class'の代わりに、私は '.class'だけを持っています。 'MyObject'を取得するには、ClassLoaderを使用しようとしましたが、動作しませんでした。
私は単に」の.class'を使用している場合:
Object value = field.get(theLoadedClass);
私は、このエラーが発生します。
java.lang.IllegalArgumentException: Can not set int field myClass.field to java.lang.Class
感謝。
「実行中のjarファイル」とはどういう意味ですか?あなたのクラスパスにありますか? – wjans