Class类
来源:互联网 发布:奇迹哥 知乎 编辑:程序博客网 时间:2024/05/29 02:25
类的祖宗是Class,对象的祖宗是Object,成员变量的祖宗是filed。
Class类是反射的基础。
Java程序在运行时,会一直对所有的对象进行所谓的运行时类型标识,这样才能选准正确的方法去执行,也就是俗称的后期绑定。Class类是一个特殊的类,每个类都有一个Class对象,用来封装一个对象和接口的运行时状态,包含了与类相关的信息。每当编写并且编译了一个类,一个Class类型的对象就会自动被创建,它被保存在.class文件中。它没有公共的构造方法,所以你不能显式地声明一个Class对象,它的对象是在加载类时由JVM和classLoader中的子系统自动构造的。每个类都有一个独一无二的Class对象。运行程序的时候,JVM 先检查是不是所要加载的类对应的Class对象已经被加载,如果还没有,那么就根据类名去找相应的.class文件,并且将其Class对象加载进去。
这样说起来,我觉得Class类有点像单例模式,因为每个类都有独一无二的Class对象。
一旦某个类的Class对象被载入内存,它就被用来创建这个类的所有对象。
既然Class类不能通过new的方法来创建对象,那么有什么方法可以获取Class对象呢?一共有3种方法可以。
1.用Object类自带的getClass方法。
比如
TestClass testClass;
Class class = testClass.getClass();
2.使用Class类自身的静态方法forName(String className),还有一个重载方法需要指定classLoader
比如
Class class = Class.forName("TestClass");
或者
Class class = Class.forName("com.test.class.TestClass");
3.直接使用类名.class
注意,基本类型,数组,也有自己的Class对象,数组也有
比如
Class class = int.class;
一些常用的方法
1. public T newInstance()
这是另外一个可以为类创建实例的方法。
x.getClass().newInstance(),这样的话就会创建一个和x一样类型的新的实例。
使用技巧
1.forName和newInstance一起使用,先创建一个字符串对象,然后根据这个字符串对象的值创建实例
Object object = Class.forName(string).newInstance();
2.因为class对象独一无二,所以可以通过比较
if( example.getClass() == Example.class)
- Class类
- Class(类)
- Class类
- 类(Class)
- Class类
- class类
- Class类
- Class类
- Class类
- class 类
- 类 Class
- Class类
- class类
- Class类
- 类.class
- 类(class)
- Class类
- 类class
- OpenCV 2.3.x/2.4.x在Visual Studio 2005/2008、Visual Studio 2010和Visual Studio 2012配置方法详解
- dataGridView实现文本数据的自动换行 Csharp
- 公有、私有和受保护的继承--《C++ primer》笔记
- ECLIPSE远程调试出现如下问题 ECLIPSE中调试代码提示找不到源
- Thread类
- Class类
- iOS 开源代码集合
- Linux下软件安装方法集锦
- udp/tcp端口大全
- SQL2005附加数据库,提示 数据库 版本为655,无法打开,此服务器支持611版本或更低版本。错误为948
- WordPress+Nginx+proxy取得真实IP
- JavaScript中的变量和闭包
- AVR单片机(ATmega16L)DS18B20温度传感器驱动程序
- soso这个无赖。