欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

类加载和反射

程序员文章站 2023-12-21 13:15:28
...

 

1、JDK动态代理和AOP(面向切面编程)

关于JDK的动态代理,最为人熟知的是Spring AOP的实现,默认情况下,Spring AOP的实现对于接口来说就是使用的JDK的动态代理来实现的,而对类的代理使用CGLIB来实现。

JDK的动态代理,就是在程序运行的过程中,根据被代理的接口来动态生成代理类的class文件,并加载运行的过程。JDK从1.3开始支持动态代理。

博客:https://blog.csdn.net/tyrroo/article/details/79072796

https://blog.csdn.net/jiankunking/article/details/52143504

https://www.jianshu.com/p/3616c70cb37b

 

2、类加载机制

类的加载由类加载器完成,类加载器通过用JVM提供。

两次运行Java程序处于两个不同的jvm进程中,两个jvm之间不会共享数据。

如:


public class A
{
    public static int a = 6;
}

/*public class A1
{
    public static void main(String[] args)
    {
        A a = new A();
        a.a++; // 7
    }
}

public class A2
{
    public static void main(String[] args) {
        A b=new A();
        b.a;   //6
    }
}
*/

类的加载:将类的class文件读入内存中,并创建一个java.lang.Class对象。

程序使用某个类是会通过加载、链接、初始化3个步骤对该类进行初始化。

Class对象的由来是将class文件读入内存,并为之创建一个Class对象。

类加载器:负责将.class文件(在磁盘或者网络上)加载到内存中,并生成对应的Java.lang.class对象。一旦同一个类被加载就不会再次载入了。

博客:https://www.cnblogs.com/xdouby/p/5829423.html

 

3、反射

生成并操作对象,运行时发现和使用类的信息。

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

其实就是动态的从内存加载一个指定的类,并获取该类中的所有的内容。

Java对象类型:编译时的类型和运行时的类型。

Person p=new Student();p变量编译类型为Person,运行类型为Student。

Class 类与 java.lang.reflect 类库一起对反射的概念进行了支持,该类库包含了 Field,Method,Constructor 类 (每个类都实现了 Member 接口)。这些类型的对象时由 JVM 在运行时创建的,用以表示未知类里对应的成员。

博客:https://blog.csdn.net/sinat_38259539/article/details/71799078

https://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.html

https://www.cnblogs.com/luoxn28/p/5686794.html

https://www.cnblogs.com/tech-bird/p/3525336.html

Spring中的IoC(控制反转)的实现原理就是工厂模式加反射机制。

https://www.cnblogs.com/Eason-S/p/5851078.html

 

上一篇:

下一篇: