<div id="cnblogs\_post\_body" class="blogpost-body "> <p>反射可以破坏所有的封装性,比如这次通过反射得到的属性与属性值;</p> <div class="cnblogs\_code"><div class="cnblogs\_code\_toolbar"><span class="cnblogs\_code\_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="https://my.oschina.net//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div> <pre> <span style="color: #008000;">/\*</span><span style="color: #008000;">\* \* 得到属性值 \* @param obj </span><span style="color: #008000;">\*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> readAttributeValue(Object obj){ String nameVlues</span>=""<span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">得到class</span> Class cls =<span style="color: #000000;"> obj.getClass(); </span><span style="color: #008000;">//</span><span style="color: #008000;">得到所有属性</span> Field\[\] fields =<span style="color: #000000;"> cls.getDeclaredFields(); </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i=<span style="color: #800080;">0</span>;i<fields.length;i++){<span style="color: #008000;">//</span><span style="color: #008000;">遍历</span> <span style="color: #0000ff;">try</span><span style="color: #000000;"> { </span><span style="color: #008000;">//</span><span style="color: #008000;">得到属性</span> Field field =<span style="color: #000000;"> fields\[i\]; </span><span style="color: #008000;">//</span><span style="color: #008000;">打开私有访问</span> field.setAccessible(<span style="color: #0000ff;">true</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">获取属性</span> String name =<span style="color: #000000;"> field.getName(); </span><span style="color: #008000;">//</span><span style="color: #008000;">获取属性值</span> Object value = field.<span style="color: #0000ff;">get</span><span style="color: #000000;">(obj); </span><span style="color: #008000;">//</span><span style="color: #008000;">一个个赋值</span> nameVlues += field.getName()+<span style="color: #800000;">"</span><span style="color: #800000;">:</span><span style="color: #800000;">"</span>+value+<span style="color: #800000;">"</span><span style="color: #800000;">,</span><span style="color: #800000;">"</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IllegalAccessException e) { e.printStackTrace(); } }<br> <span style="color: #008000;"> //获取最后一个逗号的位置</span><br> int lastIndex = nameVlues.lastIndexOf(",");<br> </span><span style="color: #008000;">//</span><span style="color: #008000;">不要最后一个逗号","</span> String result= nameVlues.substring(<span style="color: #800080;">0</span>,lastIndex<span style="color: #000000;">); System.</span><span style="color: #0000ff;">out</span><span style="color: #000000;">.println(result); }</span></pre> <div class="cnblogs\_code\_toolbar"><span class="cnblogs\_code\_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="https://my.oschina.net//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div> <p> </p> <p>我们再来看看输出的结果吧:</p> <p><img src="https://img2018.cnblogs.com/blog/1112483/201909/1112483-20190919175035808-1536189599.png" alt=""></p> <p> </p> <p>数据是提前通过set的方法赋值的</p> <p> </p> 原文地址:https://www.cnblogs.com/javaLin/p/8341388.html </div>