从头认识java-12.2 Class对象(3)-.class
2015-12-14 00:00
525 查看
这一章节我们来讨论一下得到Class对象的另一种方式.class。
1.例子
输出:
com.ray.ch12.Person
通过这种方式一样可以得到Person类的Class对象的引用,但是从输出我们观察到,在得到引用的同时,Person是没有加载到类加载器里面。
其实,初始化类包含三个步骤:
(1)加载。找到.class文件,加载到类加载器里面
(2)链接。为静态属性或者方法分配空间。
(3)初始化。初始化静态属性或者方法,如果有父类,则需要初始化父类。
初始化是在静态方法或者非静态域进行首次引用时才执行。
由于上面的代码还没有执行到初始化这一步,因此,是不会有loading等信息的打印。
结论:使用.class只会得到Class的引用,而Class.forName除了得到引用,还进行了初始化。
输出:
1
loading person
总结:这一章节结束了.class的使用以及跟Class.forName的区别。
这一章节就到这里,谢谢。
-----------------------------------
目录
1.例子
package com.ray.ch12; public class Test { public static void main(String[] args) { System.out.println(Person.class.getName()); } } class Person { static { System.out.println("loading person"); } public Person() { System.out.println("creating person"); } }
输出:
com.ray.ch12.Person
通过这种方式一样可以得到Person类的Class对象的引用,但是从输出我们观察到,在得到引用的同时,Person是没有加载到类加载器里面。
其实,初始化类包含三个步骤:
(1)加载。找到.class文件,加载到类加载器里面
(2)链接。为静态属性或者方法分配空间。
(3)初始化。初始化静态属性或者方法,如果有父类,则需要初始化父类。
初始化是在静态方法或者非静态域进行首次引用时才执行。
由于上面的代码还没有执行到初始化这一步,因此,是不会有loading等信息的打印。
结论:使用.class只会得到Class的引用,而Class.forName除了得到引用,还进行了初始化。
package com.ray.ch12; public class Test { public static void main(String[] args) { Class personClass = Person.class; System.out.println(Person.id); try { Class personClass2=Class.forName("com.ray.ch12.Person"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class Person { public final static int id = 1; static { System.out.println("loading person"); } public Person() { System.out.println("creating person"); } }
输出:
1
loading person
总结:这一章节结束了.class的使用以及跟Class.forName的区别。
这一章节就到这里,谢谢。
-----------------------------------
目录
相关文章推荐
- 从头认识java-13.2 利用元组的方式返回多类型对象
- 从头认识java-13.3 泛型接口的使用
- Java_07_01 正则表达式
- Java_07_02 异常处理
- echarts + websocket 解决实时刷新问题
- JAVA并发编程笔记二
- 关于JDK环境配置
- Unable to load configuration struts在联网和没有网路情况下启动异常
- java集合框架-转载
- java反射
- struts2
- 第三个spring冲刺第5、6、7天(三天汇总)
- Java EE开发环境搭建
- Spring+Quartz实现定时任务的配置方法
- SpringMVC集成Hibernate分页查询到对象数组问题
- cron表达式详解(Spring定时任务配置时间间隔)
- SpringMVC集成Hibernate返回json出现异常
- java 程序性能优化《第二章》设计优化 2.1善用设计模式 2 代理模式
- spring定时任务的配置使用
- Java-----正则表达式匹配模式[贪婪模式、勉强模式、占有模式]