从头认识java-12.2 Class对象(1)-简介
来源:互联网 发布:淘宝男装首页文案范文 编辑:程序博客网 时间:2024/03/29 14:44
这一章节我们来介绍一下Class对象。
在介绍前有几点需要注意的:
1.每一个类都有一个Class对象,在jvm的类加载器子系统里面生成。
2.类加载器子系统包含类加载器链,但是只有一个原生加载器,原生加载器主要加载javaapi里面的可信的类。
3.只有当类被使用的时候才会加载,这个称之为动态加载。
4.只有加载了Class,才能new这个类的所有对象。
由于前面几点都暂时没有办法证明,只能当概念记住,我们下面举例说明最后一点:
package com.ray.ch11;public class Test {public static void main(String[] args) {new A();try {Class.forName("com.ray.ch11.B");//需要包名+类名} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}class A {static {System.out.println("loading A");}public A() {System.out.println("created A");}}class B {static {System.out.println("loading B");}public B() {System.out.println("created B");}}输出:
loading A
created A
loading B
注意:在使用Class.forName的时候后面的字符串需要全名(包名+类名)。
从输出看见,create在load之后,证明了上面的描述,类是先加载后创建对象的。而在只是使用Class.forName的B中,其实只是加载B这个类,而且取得B类型的Class对象的引用(B类在加载的同时已经创建的B的Class对象),而没有创建任何B的对象。
除了Class.forName可以获取B类型的Class对象的引用,也可以通过B的对象那里获取,还可以在B.getClass()这里获取,我们下面举例:
package com.ray.ch11;public class Test {public static void main(String[] args) {B b = new B();System.out.println(b.getClass().getName());System.out.println(B.class.getName());}}class B {static {System.out.println("loading B");}public B() {System.out.println("created B");}}
输出:
loading B
created B
com.ray.ch11.B
com.ray.ch11.B
总结:这一章节我们简单的讲述了Class对象的概念与使用情况,我们下一章节将会继续讲述Class对象的使用以及一些注意的地方。
这一章节就到这里,谢谢。
-----------------------------------
目录
3 0
- 从头认识java-12.2 Class对象(1)-简介
- 从头认识java-12.2 Class对象(3)-.class
- 从头认识java-12.2 Class对象(4)-泛化
- 从头认识java-12.2 Class对象(2)-使用与注意点
- 从头认识java-11.5 扫描输入(1)-简介
- 从头认识java-1.8 创建和操纵对象(1)
- 从头认识java-1.5 继承(1)
- 从头认识java-1.8 创建和操纵对象(2)
- 从头认识java-17.4 详解同步(3)-对象锁
- 从头认识java-1.2 对象-服务提供者
- Java Class对象简介
- 从头认识java-6.2 继承(Generalization)(1)
- 从头认识java-4.7 构造器初始化(1)
- 从头认识java-4.8 数组的初始化(1)
- 从头认识java-6.6 final(1)-属性域
- 从头认识java-10.6 finally(1)-特性
- 从头认识java-11.3 格式化输出(1)
- 从头认识java-11.4 正则表达式(1)-感性认知
- A - How far away ?
- android快捷方式创建和判断的实践方法
- linux下出现ping:unknown host www.baidu.com问题时的解决办法——ubuntu下局域网络的配置
- C#几种异步编程
- app多少钱,开发一款app到底多少钱合适,开发一款APP应用大概需要多少钱
- 从头认识java-12.2 Class对象(1)-简介
- java js sql 中的replace函数
- android(9)(使用pull解析xml文件)
- 20151204正则第六部分(awk小扩展)
- 功能这么齐全的图片压缩类,还有谁?
- SlidingMenu事件处理流程
- LIS接口
- h Sqlite全面学习(一)
- Android自定义View----1. 自定义组合控件