public class myRect {
public static class Test implements Comparable<Test> {
private String name;
public Test(String name) {
this.name = name;
}
public void sout(){
System.out.println("我是谁?"+name);
}
public int compareTo(Test o) {
return 0;
}
}
public static void main(String[] args) {
try {
//打印类名,内部类用$
System.out.println(Test.class);
//需要类名
final Class<?> aClass = Class.forName("day05.myRect$Test");
//调用有参构造,无参直接aClass.newInstance()
final Constructor<?> constructor = aClass.getConstructor(String.class);
final Test test = (Test) constructor.newInstance("测试类");
//动态获取方法
final Method method = aClass.getMethod("sout");
method.invoke(test);
//修改公共变量
//final Field name = aClass.getField("name");
//修改私有变量,在创建类时没有创建set方法
final Field name = aClass.getDeclaredField("name");
name.setAccessible(true);
name.set(test,"ccc");
test.sout();
//获取class的类加载器
System.out.println(aClass.getClassLoader());
//打印所有接口
final Class<?>[] interfaces = aClass.getInterfaces();
for (Class class1: interfaces
) {
System.out.println(class1);
}
//打印父类
System.out.println(aClass.getGenericSuperclass());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
2018-06-19 java 反射的简单使用
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...