我有很多课程,例如这个:
public class DepartmentST {
public Long id = null;
public String name = null;
public String comments = null;
public Long[] profiles = null;
public Boolean default_val = false;
}
在主类中,我创建这些类的对象并将其发送给通用方法,例如:
DepartmentST mydepartment = new DepartmentST();
generalMethod(mydepartment);
一般来说,方法我想访问对象字段(这是我的问题怎么样?)
public generalMethod(Object myObj) {
Field[] fields = myObj.getClass().getFields();
for(Field field : fields) {
String fieldName = field.getName();
// I want to access that field how can i tell myObj.fielName ?
}
}
我是Java新手我不知道这是个愚蠢的问题。
感谢您提前提供任何帮助。
答案 0 :(得分:1)
请参阅http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html#get(java.lang.Object)
public generalMethod(Object myObj) {
Field[] fields = myObj.getClass().getFields();
for(Field field : fields) {
String fieldName = field.getName();
// I want to access that field how can i tell myObj.fielName ?
Class c = field.getType();
if (c instanceOf Integer) {
Integer value = field.getInt (myObj);
}
// or
Object value = field.get (myObj);
}
}
答案 1 :(得分:-1)
您需要将对象“强制转换”为DepartmentST对象:
if (myObj instanceof DepartmentST) {
DepartmentST department = (DepartmentST) myObj;
// continue with code
然后使用该对象而不是myObj。
答案 2 :(得分:-1)
基本上这段代码打破了封装。您需要私有字段,并通过getter和setter访问它们。反思是另一种方式(取决于具体情况)。