Java.lang.Class
来源:互联网 发布:腾讯视频mac 编辑:程序博客网 时间:2024/05/17 09:14
- javalangClass
- ClassforName 与 new
- 调用顺序
java.lang.Class
- Java程序运行时,Java运行时系统一直对所有的对象进行运行时类型识别。这项信息记录了每个对象所属的类。虚拟机通常使用运行时类型信息选择正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时状态,当装载类时,Class类型的对象就自动创建。
- Class没有公共构造方法。Class对象是在加载类时由JVM以及通过调用类加载器中的defineClass方法自动构造的,因此不能显示声明一个Class对象。
- JVM为每种类型管理一个独一无二的Class对象。也即是,每个类都有一个Class对象。运行程序时,JVM首先检查要加载的类其对应的Class对象是否已经加载。如果没有加载,JVM就根据类名查找.class文件,将其Class对象载入。
- Java的基本类型(boolean,byte,char,int…)和void也都对应一个Class对象。一般某个类的Class对象被载入内存,它就用来创建这个类的所有对象。
Class.forName 与 new
- Class.forName() JVM会查找并加载指定的类,并执行类的静态代码。
- 从JVM角度看,使用new创建一个类时候,这个类可以没有加载。但是使用newInstance()方式时候,就必须保证:1.这个类已经加载。2.这个类已经连接了。而完成上面两步真是Class.forName()所完成的,会调用启动类加载器。
public class TestClass { public static void main(String[] args) { try { // 测试Class.forName() System.out.println("testForName before"); Class testTypeForName = Class.forName("TestClassType"); System.out.println("testForName--" + testTypeForName); // 测试类名。class Class testTypeClass = TestClassType.class; System.out.println("testTypeClass--" + testTypeClass); // 测试Object.getClass() TestClassType testGetClass = new TestClassType(); System.out.println("testGetClass--" + testGetClass.getClass()); } catch (ClassNotFoundException e) { e.printStackTrace(); } }}class TestClassType { // 构造函数 public TestClassType() { System.out.println("--构造函数--"); } // 静态的参数初始化 static { System.out.println("--静态的参数初始化--"); } // 非静态的参数初始化 { System.out.println("--非静态的参数初始化--"); }}
运行结果
testForName before--静态的参数初始化--testForName--class TestClassTypetestTypeClass--class TestClassType--非静态的参数初始化----构造函数--testGetClass--class TestClassType
调用顺序
类加载时
1. 静态代码在类被加载时执行
通过new得到类实例时
1. 非静态代码执行
2. 构造函数执行
0 0
- java.lang.Class翻译
- java.lang.Class类
- java.lang.Class
- 类java.lang.Class
- java.lang.Class 解惑
- java.lang.Class类
- java.lang.Class类
- java.lang.Class类
- java.lang.Class
- java.lang.Class类
- java.lang.Class类
- java.lang.Class类
- class java.lang.Void
- Java.lang.Class类
- java.lang.Class类
- 3. java.lang.Class
- java.lang.Class usage
- java.lang.Class
- 新浪微博PHP7升级实践
- [DFS]poj 1321 棋盘问题
- 一维数组的逆序输出
- 排序算法总结
- 2017 年 1 月,人工智能取代了 34 名人类员工
- Java.lang.Class
- PHP Notice: undefined index 完美解决方法
- 高等数学-《函数与极限》总结笔记
- 我的向往
- Awesome
- 题解:Find Largest Value in Each Tree Rowt
- Poj3259(floyd)
- jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中
- 高等数学-对函数极限的理解