为啥反射type.GetFields 取不到任何值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥反射type.GetFields 取不到任何值相关的知识,希望对你有一定的参考价值。

参考技术A 反射不是通过get取值的,是通过该对象的信息,比如说名称、内存地址等来访问类,方法,属性等,可以获取任意对象的信息,但不能获得私有属性(private String s=“sd”;)的值,切记 推荐《JAVA核心技术》这本书会对你有帮助的
反射可以获取到属性类型,Field类里面有个方法,getType()就是获取属性类型的.
下面是个示例代码.
public static void main(String args[])
\x09\x09People peo = new People();
\x09\x09Class cla = People.class;
\x09\x09try
\x09\x09\x09Field[] fields = cla.getFields();
\x09\x09\x09for(Field field:fields)
\x09\x09\x09\x09Class c = field.getType();
\x09\x09\x09\x09if(c==String.class)
\x09\x09\x09\x09\x09field.set(peo,"EMPTY");
\x09\x09\x09\x09else if(c==Integer.class)
\x09\x09\x09\x09\x09field.set(peo,0);
\x09\x09\x09\x09
\x09\x09\x09
\x09\x09 catch (SecurityException e)
\x09\x09\x09// TODO Auto-generated catch block
\x09\x09\x09e.printStackTrace();
\x09\x09catch (IllegalArgumentException e)
\x09\x09\x09// TODO Auto-generated catch block
\x09\x09\x09e.printStackTrace();
\x09\x09 catch (IllegalAccessException e)
\x09\x09\x09// TODO Auto-generated catch block
\x09\x09\x09e.printStackTrace();
\x09\x09
\x09
主要就是用Class c = field.getType();
这个来获取类型.
仍有问题可以Hi我.或者直接追问.

以上是关于为啥反射type.GetFields 取不到任何值的主要内容,如果未能解决你的问题,请参考以下文章

C#反射调用类的私有方法

这个Appsetting为啥取不到值

关于jquery中使用.val(),取不到值。为啥啊!

php curl post提交到asp,asp取不到值是为啥

Apollo Graphql 自定义标量 JSON - 抱怨“TypeError:type.getFields 不是函数”

php ci框架 $this->session->set_userdata 为啥取不到值 session已经默认开启了