java中各个java类属于同一个事物,而描述这些事物的类名就是Class.
Class为一个类,而class为一个关键字。
Class
类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class
对象。基本的 Java 类型(boolean
、byte
、char
、short
、int
、long
、float
和 double
)和关键字 void
也表示为 Class
对象。
Class
没有公共构造方法。Class
对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass
方法自动构造的。
Class类常用的方法:
static Class<?>|forName(String className)
返回与带有给定字符串名的类或接口相关联的 Class
对象。
String | getName() 以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。 |
Package | getPackage() 获取此类的包。 |
String | getName() 以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。 |
Package | getPackage() 获取此类的包。 |
String | getName() 以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。 |
Package | getPackage() 获取此类的包。 |
String | getName() 以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。 |
Package | getPackage() 获取此类的包。 |
String | getName() 以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。 |
Package | getPackage() 获取此类的包。 |
Package|getPackage()
获取此类的包。
String|getName()
以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
boolean | isArray() 判定此 Class 对象是否表示一个数组类。 |
boolean | isArray() 判定此 Class 对象是否表示一个数组类。 |
boolean|isArray()
判定此 Class
对象是否表示一个数组类。
String|
toString
()
将对象转换为字符串。
isPrimitive()
判定指定的 Class
对象是否表示一个基本类型。
package pengesoft.sun.pack;
public class ReflectTest {
public static void main(String[] args) throws ClassNotFoundException {
// TODO Auto-generated method stub
String str1 = "abc"; //String为一个类,而不是基本类型
Class cls1 = str1.getClass();
Class cls2 = String.class;
Class cls3 = Class.forName("java.lang.String");
System.out.println(cls1 == cls2); //
System.out.println(cls1 == cls3); //——true三个对象都具有相同的字节码,JVM中只保留一份该字节码,用该字节码可以创建多个对象
System.out.println(cls1.isPrimitive()); //String不是基本类型,返回false;
System.out.println(int.class.isPrimitive()); //int为基本类型,返回true;
System.out.println(int.class == Integer.class); //int和Integer为不同的类型,有不同的字节码 ——false
System.out.println(int.class == Integer.TYPE); //TYPE常量返回该类的基本类型—— true
System.out.println(int[].class.isPrimitive()); //数组不是原始类型,故返回false
System.out.println(int[].class.isArray()); //判断是否是数组 ——true
}
}