Class类
2012-05-01 00:52
85 查看
类的祖宗是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类是反射的基础。
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)
相关文章推荐
- Java学习,数组的相关操作,封装类,Class类,反射API
- 初学JAVA的一些心得--Class类
- JS库Mootools的Class类之二关于implements 高级篇
- Java反射机制-Class类获取类信息
- Class类的简单介绍
- php class类用法总结
- SDL入门教程(十一):1、SurfaceClass类的再设计
- Java中Class类
- java中的反射二(Class类的作用)
- Java中的Class类
- java.lang.Class类...
- 黑马程序员-Class类, Constructor类,Field类, Method类的小总结
- 深入理解java虚拟机【Java Class类文件结构】
- 【深入Java虚拟机】之二:Class类文件结构
- Java中Class类与反射机制的用法总结
- Class类和反射
- Java反射机制(一):认识Class类
- Class类的isAssignableFrom(Class cls)方法
- 透彻分析反射的基础_Class类
- Class类