1、getClass()方法
Employee e;
Class c1 = e.getClass();
2、调用静态方法forName获得类名对应的Class对象
String className = “java.util.Radom”;
Class C1 = Class.forName(className);
如果类名保存在字符串中,并可在运行中改变,就可以使用这个方法。当然,这个方法只有在className是类名或接口名的时候才能执行
3、如果T是任意的Java类型(或 void关键字),T.class 将代表匹配的类对象。
Class cl1 = Random.class;
Class cl1 = int.class;
Class cl1 = double[].class;
注意:一个Class对象实际上表示的是一个类型,而这个类型未必一定是一种类
.newInstance() 创建实例的方法
public class PersonTwo {
private String name;
private void eat(String string){
System.out.println("吃");
System.out.println(string);
}
}
class TestTwo{
public static void main(String[] args) {
PersonTwo person = new PersonTwo();
//
try {
Field field = person.getClass().getDeclaredField("name");//获取该属性对应的实例域
field.setAccessible(true);//设置成可访问状态
field.set(person,"zhang");//设置实例域的值
System.out.println(field.getName()+"----"+field.get(person));//获取该实例域的属性名与属性值
Method method = person.getClass().getDeclaredMethod("eat",String.class);//通过方法签名获取对应的方法
method.setAccessible(true);//设置成可访问状态
method.invoke(person,"111111");//调用该方法
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}