Legen Sie den privaten Feldwert mit Reflektion fest

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Legen Sie den privaten Feldwert mit Reflektion fest

by Guest » 17 Jan 2025, 04:29

Ich habe zwei Klassen: Vater und Kind

Code: Select all

public class Father implements Serializable, JSONInterface {

private String a_field;

//setter and getter here

}

public class Child extends Father {
//empty class
}
Mit Reflection möchte ich ein_Feld in der Child-Klasse festlegen:

Code: Select all

Class clazz = Class.forName("Child");
Object cc = clazz.newInstance();

Field f1 = cc.getClass().getField("a_field");
f1.set(cc, "reflecting on life");
String str1 = (String) f1.get(cc.getClass());
System.out.println("field: " + str1);
aber ich habe eine Ausnahme:


Ausnahme im Thread „main“ Java .lang.NoSuchFieldException: a_field


Aber wenn ich es versuche:

Code: Select all

Child child = new Child();
child.setA_field("123");
es funktioniert.

Mit der Setter-Methode habe ich das gleiche Problem:

Code: Select all

method = cc.getClass().getMethod("setA_field");
method.invoke(cc, new Object[] { "aaaaaaaaaaaaaa" });

Top