如何使用反射获取当前类的对象类型的字段?

时间:2017-09-26 09:14:58

标签: java reflection

我有一个包含许多Label,String和int字段的类。在一个方法里面我只想循环遍历所有Label。 课程样本如下:

public class Human{

    Label lbl1;
    Label lbl2;
    Label lbl3;
    String str1;
    int i1;

    public void loadLbl(){
         //load all Label only
    }
}

以下是我现在使用的代码,但无法获得正确的语法来获取字段。 此代码将在loadLbl()中运行。

Field[] fields=Human.class.getDeclaredFields(); // get all declared fields

for(Field field:fields){
     if(field.getType().equals(Label.class)){ // if it is a String field
      field.setAccessible(true);
      //work here             
     }
}

3 个答案:

答案 0 :(得分:1)

您可以从 Human.class 更改为参考对象,例如 new Human(),它应该有效。

如下所示:

Field[] fields=new Human().getClass().getDeclaredFields();

已编辑:

或者不要在代码中使用其他方法 getClass()

如下所示:

 Field[] fields=Human.class.getDeclaredFields();

答案 1 :(得分:0)

Class  aClass = MyObject.class
Field field = aClass.getField("someField");

MyObject objectInstance = new MyObject();

Object value = field.get(objectInstance);

field.set(objetInstance, value);

答案 2 :(得分:0)

我认为Raju Sharma的答案是正确的,或者你的问题可能不够明确。完整的功能就是这样。

sum