Java中Class对象详解
来源:才华咖 本文已影响2.79W人
来源:才华咖 本文已影响2.79W人
Java中把生成Class对象和实例对象弄混了,更何况生成Class对象和生成instance都有多种方式。所以只有弄清其中的原理,才可以深入理解。首先要生成Class对象,然后再生成Instance。那Class对象的生成方式有哪些呢,以及其中是如何秘密生成的呢?一起看看吧!
Class对象的生成方式如下:
ame("类名字符串")
2.类名s
3.实例对象lass()
通过一段小程序,来观察一下Class对象的生成的原理。
/**
* 2012-2-6
* Administrator
*/
/**
* @author: 梁焕月
* 文件名:
* 时间:2012-2-6上午10:01:52
*/
public class TestClass {
public static void main(String[] args)
{
try {
//测试ame()
Class testTypeForName=ame("TestClassType");
tln("testForName---"+testTypeForName);
//测试类名s
Class testTypeClass=s;
tln("testTypeClass---"+testTypeClass);
//测试lass()
TestClassType testGetClass= new TestClassType();
tln("testGetClass---"+lass());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
tStackTrace();
}
}
}
class TestClassType{
//构造函数
public TestClassType(){
tln("----构造函数---");
}
//静态的参数初始化
static{
tln("---静态的参数初始化---");
}
//非静态的参数初始化
{
tln("----非静态的参数初始化---");
}
}
测试的结果如下:
---静态的参数初始化---
testForName---class TestClassType
testTypeClass---class TestClassType
----非静态的参数初始化---
----构造函数---
testGetClass---class TestClassType
根据结果可以发现,三种生成的Class对象一样的。并且三种生成Class对象只打印一次“静态的参数初始化”。
我们知道,静态的方法属性初始化,是在加载类的时候初始化。而非静态方法属性初始化,是new类实例对象的时候加载。
因此,这段程序说明,三种方式生成Class对象,其实只有一个Class对象。在生成Class对象的.时候,首先判断内存中是否已经加载。
所以,生成Class对象的过程其实是如此的:
当我们编写一个新的java类时,JVM就会帮我们编译成class对象,存放在同名的s文件中。在运行时,当需要生成这个类的对象,JVM就会检查此类是否已经装载内存中。若是没有装载,则把s文件装入到内存中。若是装载,则根据class文件生成实例对象。
如何理解Javascript的caller,callee,call,apply区别
详解JavaScript中的splice()使用方法
java与javascript之间json格式数据互转详解
Javascript中设立对象的ReadOnly属性
关于JavaScript中call()和apply() 的一些理解
使用ajax操作JavaScript对象的方法
javascript面向对象中的对象怎么理解
java ClassLoader机制讲解
JAVA认证开源技术:关于Java的对象equals方法
Java ClassLoader原理详细分析2016
JavaEE5与Glassfish应用服务器详解
Java ClassLoader原理深入讲解
Javascript中arguments对象的详解和使用方法
JavaScript ES6中CLASS的使用指南
如何理解Javascript的caller,callee,call,apply区别
使用JavaScript实现Java的List功能
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
万象森罗成语详解
java中对ServletsJSP的描述
Java中通过final关键字面向对象的详解
如何理解Javascript的caller,callee,call,apply区别
Java Ajax jsonp跨域请求详解
Java中的== 和equals()方法详解与实例教程
中国象棋棋谱口诀详解
如何理解Javascript的caller,callee,call,apply区别
Java中的main()方法详解2016
如何理解JavaScript的caller,callee,call,apply
如何理解Javascript的caller,callee,call,apply区别
Javascript中call与apply的学习笔记示例
如何理解Javascript的caller,callee,call,apply区别
关于javascript中apply()和call()方法的区别
java的Class类有哪些
javascript中String对象的slice()方法
要写好演讲稿必须要了解听众对象
理解Javascript对象
perl- javascript中class的机制
Java Class文件是什么
Java语言Class文件是什么
如何理解Javascript的caller,callee,call,apply区别