码迷,mamicode.com
首页 > 其他好文 > 详细

关于反射和动态代理和AOP

时间:2019-08-13 00:13:09      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:ref   anti   new   instance   logs   sys   变量   not   www   

package Exercise.reflect;

/**
 * 反射把java中所有的东西都当做对象,甚至是类的本身也作为一种对象,并把它作为Class的对象的实例;
 * 反射是把类、类的属性、方法都作为一个对象类进行剖析;
 *
 * 为什么需要反射?把类变成活的,当一个类经过java虚拟机编译之后会生成对应的字节码文件,即xxx.class,
 * 而反射就是去解析这个类的信息,包括其中所包含的变量和方法;
 * 在运行期间去加载一个类,并对类进行剖析,甚至可以给一个类的属性动态的赋值,也可以去唤醒它的内部的方法,
 *
 * Spring容器就是用反射去加载一个类的;
 *
 * 感觉反射很神奇,抽象,它的底层到底是如何实现的?反射的底层到底是如何实现的?说获得一个类就获得一个类,
 * 是不是编译原理的?
 * 源代码→预处理器 → 编译器 → 目标代码(机器语言) → 可执行文件
 *
 * 另外,java虚拟机的原理到底是什么?把一个类加载,并生产对应的字节码文件;java虚拟机在一定程度上已经
替代了编译器,生成了目标文件,所以它能随处运行; *
*/ public class ClassDemo01 { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { //Foo实例对象 Foo foo1=new Foo(); //通过类本身的编译类获得这个类; Class c1=Foo.class; //该类对象通过getClass方法 Class c2=foo1.getClass(); System.out.println(c1==c2); //类的类类型创建该类的对象实例; Class c3=null; System.out.println(c2==c3); c3=Class.forName("Exercise.reflect.Foo"); //获得类的类类型创建该类的对象实例; Foo foo=(Foo)c1.newInstance(); foo.print(); } } class Foo{ void print(){ System.out.println("foo"); } }

 关于反射,可以参看之前写的,https://www.cnblogs.com/shijinglu2018/p/8371615.html

关于反射和动态代理和AOP

标签:ref   anti   new   instance   logs   sys   变量   not   www   

原文地址:https://www.cnblogs.com/shijinglu2018/p/11343282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!