Class 与 类加载
- Class对象由JVM自动产生,每当一个类被加载时,JVM就自动为其生成一个Class对象,通过Class对象可以获得类的相关信息。
- 将类信息读到内存中过程,称为类加载
-
Java在需要使用某个类时,才会将该类进行加载,而不是在程序启动时就加载所有的类。
-
所谓真正需要是指生成类的对象或类被加载时 new , Class.forName() , ClassLoader
Ø加载class对象
有6种情况JVM会加载Class对象
- 使用new关键字创建对象时。
- 通过反射创建对象时。
- 调用某个类的static方法时。
- 调用某个类的static属性时。
- 当初始化某个类的子类时。
- 某个类标明为main() 函数类(启动类) 。
ØClass.forName加载类
- 实现动态加载类
- static Class forName(String name)
- static Class forName(String name, boolean initialize, ClassLoader loader)
- 类的具体路径 设为false代表在加载类时不会立即运行静态块,而会在使用类建立对象时才运行静态块。
- 类加载器 Thread.currentThread().getContextClassLoader() —— 获得当前主线程的类加载器
Øjava代码
public class Demo1 { public static void main(String[] args) { String s = new String("wenhaitao"); //1. getClass() Class cls= s.getClass(); System.out.println("leiming" + cls.getName()); System.out.println("baoming" + cls.getPackage()); System.out.println("是否为接口:" + cls.isInterface()); System.out.println("是否为基本类型:" + cls.isPrimitive()); System.out.println("是否为数组:" + cls.isArray()); System.out.println("String类的父类:" + cls.getSuperclass()); //2.Class Class cls1 = String.class; System.out.println("类名:" + cls1.getName()); System.out.println("包名:" + cls1.getPackage()); System.out.println("是否为接口:" + cls1.isInterface()); System.out.println("是否为基本类型:" + cls1.isPrimitive()); System.out.println("是否为数组:" + cls1.isArray()); System.out.println("String类的父类:" + cls1.getSuperclass()); System.out.println(cls == cls1); int a = 100; System.out.println(int.class); } }
Ø获取一个对象的父类与实现接口
public class Demo4 { public static void main(String[] args) { Class clz;//类对象 ClassLoader cl, cl1;//类加载器 clz = String.class; cl = clz.getClassLoader();//得到加载String类对象的类加载器 System.out.println("加载String类对象的加载器:" + cl); //当类加载器为null的时候,表示的是BootStrapLoader System.out.println("******************************"); clz = Demo4.class; cl = clz.getClassLoader(); System.out.println("加载Demo4类对象的类加载器:" + cl); while(cl!=null) { cl1 = cl; cl = cl1.getParent();//得到父加载器 System.out.println(cl1+"的父加载器是:" + cl); } } }
别荒废了最能拼的年纪,让自己整天无所事事。自己那么差又不努力,还有什么资格唉声叹气。
为了自己想要的未来,无论现在有多难熬,都必须得满怀信心的坚持下去。