一、field.setAccessible()方法:

setAccessible方法是干什么用的呢让我们来看一段代码吧:

  1. public class User {
  2. private String name;
  3.  
  4. public User(String name) {
  5. this.name = name;
  6. }
  7.  
  8. public String getName() {
  9. return name;
  10. }
  11.  
  12. public void setName(String name) {
  13. this.name = name;
  14. }
  15.  
  16. }
  1. import java.lang.reflect.Field;
  2.  
  3. public class Demo {
  4. public static void main(String[] args) throws Exception {
  5. Class clazz = User.class;
  6. User u = new User("小明");
  7. for(Field field: clazz.getDeclaredFields()){
  8. System.out.println(field.isAccessible()); //这里的结果是false
  9. field.setAccessible(true);
  10. System.out.println(field.getName() + ":" + field.get(u));
  11. }
  12. }
  13. }

通过运行以上代码,我们发现  System.out.println(f.isAccessible())这一句打印结果是"false",从字面上理解是说该字段不能被访问

如果不写field.setAccessible(true);会抛出异常;

经过检查发现getName()这个方法并不抛异常,也就是是就算没有加f.setAccessible(true);也可以获得name,抛异常的是f.get(u);这句话

结论:当isAccessible()的结果是false时不允许通过反射访问该字段

当该字段时private修饰时isAccessible()得到的值是false,必须要改成true才可以访问

所以     f.setAccessible(true);得作用就是让我们在用反射时访问私有变量

上面最后的打印:

  1. false
  2. name:小明

二、

------------

java反射例子的更多相关文章

  1. 非常好的Java反射例子

    1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时对象所属的类 2)可以判断运行时对象所具有的成员变量和方法 3)通过反射甚至可以调用到pr ...

  2. 【转】非常好的Java反射例子

    转自 http://www.douban.com/note/306848299/ 原文: 1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时 ...

  3. Java反射——引言

    Java反射——引言 原文地址:http://tutorials.jenkov.com/java-reflection/index.html *By Jakob Jenkov Java的反射机制使得它 ...

  4. 【译】1. Java反射——引言

    原文地址:http://tutorials.jenkov.com/java-reflection/index.html *By Jakob Jenkov Java的反射机制使得它可以在运行时检查类.接 ...

  5. java反射基础知识(三)

    原文地址:http://tutorials.jenkov.com/java-reflection/index.html http://www.cnblogs.com/penghongwei/p/329 ...

  6. (转)个例子让你了解Java反射机制

    个例子让你了解Java反射机制   原文地址:http://blog.csdn.net/ljphhj/article/details/12858767 JAVA反射机制:   通俗地说,反射机制就是可 ...

  7. 一个例子让你了解Java反射机制

    本文来自:blog.csdn.net/ljphhj JAVA反射机制: 通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运 ...

  8. 第28章 java反射机制

    java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...

  9. Java反射机制

    Java反射机制 一:什么事反射机制 简单地说,就是程序运行时能够通过反射的到类的所有信息,只需要获得类名,方法名,属性名. 二:为什么要用反射:     静态编译:在编译时确定类型,绑定对象,即通过 ...

随机推荐

  1. AsyncTask 异步任务 的用法(并且使用ORMlite关系数据库);

    package com.lixu.asynctask; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.tab ...

  2. xitong

    回复 YAJE3 :http://msdn.anjieart.net/和http://msdn.ez58.net/files/windows%20vista同样是MSDN网站 msdnitellyou ...

  3. 安装Win8后必做的优化

    原版或者精简版的希望都看看安装好Win8后必做的优化:1.关闭家庭组,因为这功能会导致硬盘和CPU处于高负荷状态关闭方法:Win+C – 设置 – 更改电脑设置 – 家庭组 – 离开如果用不到家庭组可 ...

  4. 《JAVA---day03---运算符》

    /*[位运算符] 运算符: 运算 范例 说明 <<: 左移 3<<2=12--->3*2*2=12 >>: 右移 3>>2=1---->3/ ...

  5. CCScrollView

    #ifndef TestCCScrollView_testScene_h #define TestCCScrollView_testScene_h #include "cocos2d.h&q ...

  6. webView的使用以及总结

    一.webview是什么? Android WebView 做为承载网页的载体控件,他在网页显示的过程中会产生一些事件,并回调给我们的应用程序,以便我们在网页加载过程中做应用程序想处理的事情.比如说客 ...

  7. ZooKeeper安装,部署

    实验环境 192.168.1.10 Zookeeper1:2181, Zookeeper2:2182 192.168.1.11 ZooKeeper3:2181 依赖环境 JDK1.7 安装,配置 1. ...

  8. Koa下http代理

    前言 最近做管理后台的重构或者说重做. 至于为什么要重构. 随意的解释: 是原来写的人走了. 客观的解释: 用的人觉得不好用 维护的人员找不到北 再多一点解释: express + ejs的混合编写 ...

  9. 八皇后 递归or迭代

    递归: #include <iostream> #include <cstdlib> #include <cstdio> using namespace std; ...

  10. hdu1255 覆盖的面积 线段树-扫描线

    矩形面积并 线段树-扫描线裸题 #include<stdio.h> #include<string.h> #include<algorithm> #include& ...