Legen Sie den privaten Feldwert mit Reflektion fest
Posted: 17 Jan 2025, 04:29
Ich habe zwei Klassen: Vater und Kind
Mit Reflection möchte ich ein_Feld in der Child-Klasse festlegen:
aber ich habe eine Ausnahme:
Ausnahme im Thread „main“ Java .lang.NoSuchFieldException: a_field
Aber wenn ich es versuche:
es funktioniert.
Mit der Setter-Methode habe ich das gleiche Problem:
Code: Select all
public class Father implements Serializable, JSONInterface {
private String a_field;
//setter and getter here
}
public class Child extends Father {
//empty class
}
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);
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");
Mit der Setter-Methode habe ich das gleiche Problem:
Code: Select all
method = cc.getClass().getMethod("setA_field");
method.invoke(cc, new Object[] { "aaaaaaaaaaaaaa" });