JAVA反射原理
目标
1.动态查看类的信息
2.动态新建类的对象
3.运行时调用methods
4.运行时变更fields内容
5.动态创建数组
什么叫反射
Java 反射是Java语言的一个很重要的特征,它使得Java具有了“动态性”。
Java提供了一套机制来动态获取类的信息以及动态调用对象的方法的功能,这套机制就叫——反射
反射机制是如今很多流行框架的实现基础,其中包括Struts、Spring、Hibernate等。
在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中
Class类:代表一个类。 Field 类:代表类的成员变量(成员变量也称为类的属性)。
Method类:代表类的方法。
Modifier类:代表修饰符。
Constructor 类:代表类的构造方法。
Array类:提供了动态创建数组,以及访问数组的元素的静态方法
调用方法步骤:
设定调用方法的参数列表(Class[])
获得调用方法的对象(Method)
设定调用方法的参数的值(Object[])
普通方法:invoke(obj,values);
构造方法:newInstance(values)
调用属性步骤:
根据属性名字获得属性对象(Field)
赋值:set(obj,value)
取值:get(obj)
代码展示:
public static void main(String[] args) {
//创建对象
Calculator c = new Calculator();
//调用
/* int result = c.add(1, 2);
System.out.println(result);*/
int result = c.sub(1, 1);
System.out.println(result);
String str = "abc";
public void init(){
System.out.println("init...");
}
/**
* 释放资源方法:
* 在所有测试方法执行完后,都会自动执行该方法
*/
@After
public void close(){
System.out.println("close...");
}
/**
* 测试add方法
*/
@Test
public void testAdd(){
// System.out.println("我被执行了");
//1.创建计算器对象
System.out.println("testAdd...");
Calculator c = new Calculator();
//2.调用add方法
int result = c.add(1, 2);
//System.out.println(result);
//3.断言 我断言这个结果是3
Assert.assertEquals(3,result);
}
@Test
public void testSub(){
//1.创建计算器对象
Calculator c = new Calculator();
int result = c.sub(1, 2);
System.out.println("testSub....");
Assert.assertEquals(-1,result);
}
心得:
如果你只为薪水而工作,你的生活将因此而陷入平庸之中,你找不到人生中真正的成就感,工作的目的虽然是为了获得报酬,但工作能给你带来的远比工资要多的多。努力工作并且学习,你会收获很多。

浙公网安备 33010602011771号