我如何在Java中使用反射来访问内部类变量值? [英] How i can access inner class variable value using reflection in java?

查看:123
本文介绍了我如何在Java中使用反射来访问内部类变量值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有像下面这样的类,其中包含多个内部类:

Suppose i have class like below with multiple inner classes :

public class Constants {

    public class Class1 {
        public static final String IODATA = "IOData";
        public static final String HUB_INPUTS = "HubInputs";
    }

    public class Class2 {
        public static final String CLASS_INPUTS = "Class Inputs";
        public static final String AUXILIARIES_ON_BUTTON = "Auxiliaries On Button";
    }

    public class Class3 {
        public static final String CLASS_INPUTS = "Class Inputs";
        public static final String AUXILIARIES_ON_BUTTON = "Auxiliaries On Button";
    }
}

我想访问所有内部类变量,然后可以编写如下代码,然后获取变量名称和值:

I want to access all inner class variable then i can write code like below and i can get the variable name and value:

public static void getClassNameMap() throws Exception  {
    Constants cons = new Constants();
    Constants.Class1 class1 = cons.new Class1();
    for (Field fields : class1 .getClass().getFields())  {
      System.out.println(fields.get(projectObjectCons).toString() + "--" + fields.getName());
    }
}

但是一些如何获取所有内部类名称的String数组的方法:

But some how i get array of String of all inner classes name like :

String []arr = {"Class1","Class2","Class3"};

如何使用这些String类名获取所有内部类变量和值? 因为我无法使用其字符串名称来创建类实例. 请帮帮我.

how can i get all inner class variable and value using these String class name ??? Because i can not make class instance using its string name. Please help me out.

推荐答案

Class[] classes = Constants.class.getDeclaredClasses();     
    for(Class innerClass: classes){
        //System.out.println(innerClass.getName());
        Field[] fields = innerClass.getDeclaredFields();
        for(Field field : fields){
            //System.out.println(field.getName());
            //your implementation
        }           
    }

此代码将符合您的期望.

This code will match your expectations.

谢谢

这篇关于我如何在Java中使用反射来访问内部类变量值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆