您的位置:首页 > 编程语言 > Java开发

Java反射学习和笔记——黑马训练营

2015-10-22 18:24 375 查看
-------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-------

1.反射的概念

反射机制指的是程序在运行时能够获取自身的信心。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。

2.反射机制的作用

  通过反射机制访问java对象的属性、方法、构造函数

反射就是把Java类中的各种成分映射成相应的java类

3.反射机制的实用

Class 获取字节的方式

Class cls1=Data.class;
调用 类名.Class,可以获取该类的字节码

public static void main(String[] args) {
String str1="abc";
//获取str1字节码
Class cls1=str1.getClass();
System.out.println(cls1);
}
调用 对象.getClass(),如上述代码str1.getClass返回String类对应的Class对象(得到一个类的字节码)。

Class.forName("java.lang.String"); //会抛出异常(ClassNotFoundException)
通过Class.forName("类名"),可以同样可以获取类名的字节码。

boolean isPrimitive() 判断指定的Class对象是否是一个基本类型,返回boolean类型。

Field类 代表某个类中的一个成员变量

class Reflecpoint{
private int x;
public int y;
//构造函数
public Reflecpoint(int x, int y) {
super();
this.x = x;
this.y = y;
}
}
//反射类
public class Method {
public static void main(String[] args) throws Exception{
Reflecpoint pt1=new Reflecpoint(3, 9);
//得到类的成员变量,先要得到该类的字节码
//fieldY(共有的)不是对象身上的变量,而是类上,要用它去取某个对象上对应的值
Field fieldY=pt1.getClass().getField("y");
System.out.println(fieldY.get(pt1));
//获取fieldX(私有的) getDeclaredField获取该类中任意成员变量,包括私有
Field fieldX=pt1.getClass().getDeclaredField("x");
//将该私有字段进行取消权限检查的能力
fieldX.setAccessible(true);
System.out.println(fieldY.get(pt1));
}
}
Method类 代表某个类中的成员方法
String str1="abc";
Method methodChar=String.class.getMethod("charAt", int.class);
//invoke()调用方法
System.out.println(methodChar.invoke(str1, 1));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: