
B6_java反射机制
java反射机制
少年西西
这个作者很懒,什么都没留下…
展开
-
java反射应用二:获取运行时类的完整结构
我们可以通过反射,获取对应的运行时类中所有的属性、方法、构造器、父类、接口、父类的泛型、包、注解、异常等。。。。典型代码:1.获取属性:权限修饰符 数据类型 变量名public class FiledTest { @Test public void test(){ Class clazz = Person.class; //获取属性结构 //getFields():获取当前运行时类及其父类、接口中声明为public访问权限的属性原创 2020-12-14 17:18:47 · 113 阅读 · 0 评论 -
java反射应用一:创建运行时类的对象
1.代码举例Class<Person> clazz = Person.class;Person p = clazz.newInstance();System.out.println(p);Constructor<Person> cons = clazz.getDeclaredConstructor(String.class);cons.setAccessible(true);Person p1 = cons.newInstance("朴灿烈");System.out原创 2020-12-14 17:08:40 · 202 阅读 · 0 评论 -
java反射应用四:动态代理
1.代理模式的理解:使用一个代理将对象包装起来, 然后用该代理对象取代原始对象。任何对原 始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原 始对象上2.静态代理:2.1举例:静态代理的缺点:3.动态代理:动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时 根据需要动态创建目标类的代理对象体现为两方面的实现:4.动态代理的典型代码:interface Human{ String getBelief(); void eat(Strin原创 2020-12-14 18:01:05 · 96 阅读 · 0 评论 -
java反射应用三:调用运行时类的指定结构
1.调用指定的属性:Class clazz = Person.class;//创建运行时类的对象Person p = (Person) clazz.newInstance();//1. getDeclaredField(String fieldName):获取运行时类中指定变量名的属性Field name = clazz.getDeclaredField("name");//2.保证当前属性是可访问的name.setAccessible(true);//3.获取、设置指定对象的此属性原创 2020-12-14 17:21:15 · 90 阅读 · 0 评论 -
java反射中Class类的理解与获取Class的实例
1.Class类的理解1.类的加载过程:程序经过javac.exe命令以后,会生成一个或多个字节码文件(.class结尾)。接着我们使用java.exe命令对某个字节码文件进行解释运行。相当于将某个字节码文件 加载到内存中。此过程就称为类的加载。加载到内存中的类,我们就称为运行时类,此运行时类,就作为Class的一个实例。2.换句话说,Class的实例就对应着一个运行时类。3.加载到内存中的运行时类,会缓存一定的时间。在此时间之内,我们可以通过不同的方式 来获取此运行时类。2.获取Class原创 2020-12-14 17:05:07 · 159 阅读 · 0 评论 -
Java中反射的概述及了解ClassLoader
反射的概述1.本章的主要内容①、理解Class类并获取Class实例②、创建运行时类的对象③、调用运行时类的指定结构2.关于反射的理解框架 = 反射 + 注解 + 设计模式。3.体会反射机制的“动态性”是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以 被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。举例:public Object getInstance(String classPath) throws Ex原创 2020-12-14 16:47:51 · 201 阅读 · 0 评论