java反射机制中的getDeclaredField()
来源:互联网 发布:office2016for mac安装 编辑:程序博客网 时间:2024/05/16 13:56
转:https://my.oschina.net/swords/blog/117357
反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力。通过这种能力可以彻底的了解自身的情况为下一步的动作做准备。
getDeclaredField()的一个例子
http://technet.microsoft.com/zh-cn/library/aa989722 代码来源
import java.lang.reflect.Field;
import java.util.Date;
public class Program {
public Program() {
}
public Program(String str, Date date, int i) {
this.str = str;
this.date = date;
this.i = i;
}
private String str = "Hello";
private Date date = new Date();
protected int i = 0;
public int getI() {
return i;
}
public String getStr() {
return str;
}
public static void main(String[] args) throws IllegalArgumentException,
IllegalAccessException {
try {
Program program = new Program();
Class progClass = program.getClass();
//通过反射机制,获取到类Program中的str
Field strField1 = progClass.getDeclaredField("str");
//输出private java.lang.String Program.str
System.out.println("Field found: " + strField1.toString());
//同上
Field dateField = progClass.getDeclaredField("date");
System.out.println("Field found: " + dateField.toString());
//同上
Field iField = progClass.getDeclaredField("i");
System.out.println("Field found: " + iField.toString());
//我想说的是这一点,这里能获取到类Program中的str并对其修改。
//Program类中没有对str设置的setStr()方法,而且使用了private,
//这是不允许访问的。
//但是我们能通过反射机制,从而获取private类型的值,并直接改。
Field strField = progClass.getDeclaredField("str");
strField.set(program, "我是Str字符串。");
//输出:我是Str字符串。
System.out.println(program.getStr());
} catch (NoSuchFieldException ex) {
System.out.println(ex.toString());
}
}
}
输出是:
Field found: private java.lang.String Program.str
Field found: private java.util.Date Program.date
Field found: protected int Program.i
我是Str字符串。
- java反射机制中的getDeclaredField()
- Java反射之getDeclaredField()
- Java 反射机制中 getMethod()和getDeclaredField()区别
- Java 反射机制中 getMethod()和getDeclaredField()区别
- Java 反射机制中 getMethod()和getDeclaredField()区别
- Java 反射机制中 getMethod()和getDeclaredField()区别
- java反射机制——getMethod/getField与getDeclaredMethod/getDeclaredField区别
- java 反射 getDeclaredField和getField的区别
- java反射getDeclaredField和getField的区别
- java getDeclaredField
- Java中的反射机制
- JAVA中的反射机制
- Java中的反射机制
- java中的反射机制
- JAVA中的反射机制
- Java中的反射机制
- Java中的反射机制
- java中的反射机制
- 【Python】从爬虫开始吧——爬取妹子图整站
- 安装Android应用出错:Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]
- ubuntu + nohup
- CI-搭建
- jquery $.getScript优缺点
- java反射机制中的getDeclaredField()
- 数据库内外网交换怎么做的,如果交换给你做,你怎么做
- effect C++ 尽可能使用const
- java中的位运算
- React+webpack开发环境的搭建_0
- unity 如何去除打包好的应用程序边框
- Mybatis分页查询及底部页码实现
- C++模板:函数模板、类模板、模板与继承
- 对原始信源的格式、存储形式及表示形式的详解