黑马程序员技术交流社区
标题:
求帮助讲解--关于反射内部类的问题
[打印本页]
作者:
迷失的独白
时间:
2014-8-29 18:53
标题:
求帮助讲解--关于反射内部类的问题
本帖最后由 迷失的独白 于 2014-8-29 21:12 编辑
package mystudyexercisejava;
import java.lang.reflect.Modifier;
public class ReflectInnerClassTest {
public static void main(String args[]){
ReflectInnerClass ric=new ReflectInnerClass();
try {
reflectInnerClass(ric);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void reflectInnerClass(ReflectInnerClass ric) throws Exception {
Class clazz=ric.getClass();
Class classes[]=clazz.getDeclaredClasses();
for(Class c:classes){//对成员内部类进行反射
int i=c.getModifiers();
String s=Modifier.toString(i);
if(s.contains("static"))//静态内部类的处理
c.getConstructor().newInstance();
else//实例内部类的处理
c.getConstructor(ric.getClass()).newInstance(ric);
}
Runnable r=(Runnable)(clazz.getField("ta").get(ric));
r.run();
}
}
class ReflectInnerClass {
public Runnable ta=new Runnable(){
public void run(){
System.out.println("匿名内部类中的方法被执行了");
}
};
class Innerc{
public Innerc(){
System.out.println("Inner3类被实例化了");
}
}
private class Innerb{
public Innerb(){
System.out.println("Inner2类被实例化了");
}
}
public static class Innerd{
public Innerd(){
System.out.println("Inner4类被实例化了");
}
}
public class Innera{
public Innera(){
System.out.println("Inner1类被实例化了");
}
}
}
复制代码
c.getConstructor(ric.getClass()).newInstance(ric); 这句话
作者:
java_dream
时间:
2014-8-29 21:47
具体什么问题呀?
作者:
迷失的独白
时间:
2014-8-29 22:42
java_dream 发表于 2014-8-29 21:47
具体什么问题呀?
c在当前是一个内部类
但是为什么
getConstructor(ric.getClass())
newInstance(ric)
这两句话的参数都是外部类,还有具体是怎么操作的?
我现在只能懵懂的明白一点,就是想知道为什么要传这两个参数,而不是内部类.class
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2