String str = "123";
Class c = str.getClass();
System.out.println(c);//class java.lang.String
Class.forName(...)
Class c = Class.forName("java.lang.String");//指定一个全限定名
会载入一个类,自动执行static{}
类字面常量:
数据类型.class语法
Class c1 = String.class;
Class c2 = int[].class;
Class c3 = int.class;
Class c4 = Person.class;
不会载入类
运用基本类型的
包装类的TYPE语法
Class c1 = Integer.TYPE;//==int.class
Class c2 = Void.TYPE;//==void.class
Class对象的方法
String getName()
获取全限定名(完整包名+类名)
T newInstance()
创建此 Class 对象所表示的类的一个新实例
会执行static{},{},构造方法
Field[] getFields()
获得所有公有的public字段(包括继承来的)
Field getField(String name)
返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定名称(name)的公共成员(public)字段。
Field[] getDeclaredFields()
返回本类中声明的所有字段(4种权限的),不包含继承过来的
Field getDeclaredField(String name)
返回一个 Field 对象,
该对象反映此 Class 对象所表示的类或接口的
指定已声明字段。
Method[] getMethods()
获得所有公有的方法(包括继承来的)
Method[] getDeclaredMethods()
返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
Constructor[] getConstructors();
获得类中的public构造器
Constructor[] getDeclaredConstructors()
获得所有的构造器
Class [] getInterfaces()
确定此对象所表示的类或接口实现的接口
Class getSuperclass()
返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class
Field类的方法
String getName()
获取字段名
int getModifiers()
用于返回Field的修饰符
可利用java.lang.reflect.Modifier里面的
static String toString(int mod)来得到对应的字符串表示;
mod为getModifiers()的返回值.
java.lang.reflect.Modifier
public static final int ABSTRACT 1024
public static final int FINAL 16
public static final int INTERFACE 512
public static final int PRIVATE 2
public static final int PROTECTED 4
public static final int PUBLIC 1
public static final int STATIC 8
public static final int SYNCHRONIZED 32
public static final int TRANSIENT 128
例如:public static int d;
getModifiers()的结果就是1+8=9;
1:
00000001
8:
00001000
Modifier.toString(9)的结果就是 public static