我想遍历类字段以下列方式字段的字段值如何让这个类
我有类
public class Parent{
String name;
String lastName;
}
public class Child extends Parent{
int childNumber;
}
在我想有一个父类“得到“方法
孩子将继承
此方法将通过它的名字
返回一个字段的值我如何检索该字段的值?
我想的方法是这样的:
public Object get(String key){
Field field;
Object result = null;
try {
field = this.getClass().getDeclaredField(key);
if(field!=null) {
field.setAccessible(true);
}
result = field.get(this); // this is where my problem, i don't know how to retrieve the field's value
} catch (NoSuchFieldException | SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
堆栈跟踪
java.lang.IllegalArgumentException: Can not set int field com.database.User.userID to java.lang.String
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source)
at sun.reflect.UnsafeIntegerFieldAccessorImpl.getInt(Unknown Source)
at sun.reflect.UnsafeIntegerFieldAccessorImpl.get(Unknown Source)
at java.lang.reflect.Field.get(Unknown Source)
at com.database.DatabaseObject.get(DatabaseObject.java:106)
at com.database.DatabaseObject.set(DatabaseObject.java:128)
at com.database.DatabaseObject.getInsertPreparedStatement(DatabaseObject.java:64)
at com.database.Database.insert(Database.java:95)
at com.lenabru.webservice.ElectronicArenaWebService.register(ElectronicArenaWebService.java:21)
at com.database.Main.main(Main.java:29)
什么对您提供的代码段不起作用? – hexafraction
我把堆栈跟踪的帖子中,java认为我想设置字段,并没有得到它 –
你可能会展示你如何使用代码? (这是什么'这是指和您试图访问的字段的名称?) –