java如何利用反射机制得到一个类中为数组类型的成员变量的值

java如何利用反射机制得到一个类中为数组类型的成员变量的值,第1张

写了个例子,请仔细查看代码,具体过程需要你自己对照java API 再研究,

先定义了一个普通的学生类,如下:

public class Student {

private int id;

private String name;

private int age;

private String[] aiHao;

public int getId() {

return id;

}

public void setId(int id) {

thisid = id;

}

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

thisage = age;

}

public String[] getAiHao() {

return aiHao;

}

public void setAiHao(String[] aiHao) {

thisaiHao = aiHao;

}

}

对学生类进行反射

public class Test3 {

public static void main(String[] args) {

Student s = new Student();

ssetId(1);

ssetName("张三");

ssetAge(23);

ssetAiHao(new String[] { "足球", "篮球", "上网" });

try {

// 获取所有的变量

Field[] fields = StudentclassgetDeclaredFields();

// 循环处理变量

for (Field f : fields) {

fsetAccessible(true);

Object value = fget(s); // 取变量的值

Systemoutprint("变量名称为:" + fgetName());

if (valuegetClass()isArray()) { // 判断是否是数组

Object[] arr = (Object[]) value; // 装换成数组

Systemoutprintln(",变量值等于:" + ArraystoString(arr));

// 这里还可以做额外处理,判断数组的类型 如下面注释的代码

/

for (Object a : arr) {

Systemoutprintln("参数类型" + agetClass()getName());

// 同样运用反射的机制做额外处理

}

/

} else {

// 非数组类型,普通处理

Systemoutprintln(",变量值等于:" + value);

}

fsetAccessible(false);

}

} catch (Exception e) {

eprintStackTrace();

}

}

}

 class Test

        {

            public static string StaticPer = "StaticPer";

            public readonly string ReadOnlyPer = "ReadOnlyPer";

            public const string ConstPer = "ConstPer";

            public string GetPer { get { return "GetPer"; } }

            private string _SetPer;

            public string SetPer { set { _SetPer = value; } }

            public string GetSetPer { get; set; }

            public void Ok()

            {

            }

        }

        

        

        

        var obj = new Test();

            var type = objGetType();

            var p = typeGetProperties(BindingFlagsInstance | BindingFlagsPublic);

            foreach (var item in p)

            {

                ConsoleWriteLine("Name: {0}", itemName);

            }

            foreach (FieldInfo field in typeGetFields())

            {

                ConsoleWriteLine("Field: {0}, Value:{1}", fieldName, fieldGetValue(obj));

            }

以上就是关于java如何利用反射机制得到一个类中为数组类型的成员变量的值全部的内容,包括:java如何利用反射机制得到一个类中为数组类型的成员变量的值、c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢比如说一个const类型的常量:con、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9748993.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存