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

来源:互联网 发布:网页设计认证知乎 编辑:程序博客网 时间:2024/04/29 08:03

-------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));




0 0
原创粉丝点击