我想遍歷類字段以下列方式字段的字段值如何讓這個類
我有類
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認爲我想設置字段,並沒有得到它 –
你可能會展示你如何使用代碼? (這是什麼'這是指和您試圖訪問的字段的名稱?) –