反射与内部类 我输出19行的length 是有1的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试试Constructor con = c.getDeclaredConstructors()[0]; Constructor con = c.getDeclaredConstructor(new Class[]{Outer.class}); System.out.println(c.getDeclaredConstructors().length); con.setAccessible(true); l.newInstance(); con.newInstance(new Outer()); 这个我试过可以获取 不过点他的newInstance 就会报错了 我能不能实例化私有的内部类呢应该不能吧,不过在Outer类里面应该可以。这个我也不太清楚。 当然可以实例化内部类对象,只是内部类有点特殊要实例化成员内部类必须先实例化其外部类对象.内部类的构造方法看似无参的,其实默认是含有外部类对象的有参构造函数.public class Test { public static void main(String[] args) throws Exception{ Class<?> cl=Class.forName("Outer"); Constructor<?> con=cl.getDeclaredConstructor(); con.setAccessible(true);//在实例化内部类对象之前先实例化外部类对象 Object outer=con.newInstance();//内部类对象的构造方法看似无参其实是有含有外部类对象的有参构造函数 cl=Class.forName("Outer$Inter");//这才是他真正的构造函数 con=cl.getDeclaredConstructor(Outer.class); con.setAccessible(true);//既然含有外部类对象的构造函数自然在构造的时候要把外部类的对象传入 Object inter=con.newInstance(outer); System.out.println(inter); }}class Outer { private class Inter{ }} 我能不能实例化私有的内部类呢应该不能吧,不过在Outer类里面应该可以。这个我也不太清楚。谢谢各位 无聊的时候又发现了一个问题 如果私有内部类里面又有一个私有内部类 那con = cl.getDeclaredConstructor(Outer.class);后面那个参数不能找到内部类的class 应该怎么处理谢谢 如果还有私有内部类一样的实例化当前这个私有内部类的持有外部类(也就是这个内部类成员的所属外部类也就是这里的Outer.Inter),依此类推,只要记住成员内部类的特征就是相当于成员变量或成员方法,那么就和成员变量和方法一样的,要想得到成员变量或方法总得先得到他的持有对象,所以内部类一样的道理,要想实例化它就要得到他的持有对象.public class Test { public static void main(String[] args) throws Exception { Class<?> cl = Class.forName("Outer"); Constructor<?> con = cl.getDeclaredConstructor(); con.setAccessible(true); // 在实例化内部类对象之前先实例化外部类对象 Object outer = con.newInstance(); // 内部类对象的构造方法看似无参其实是有含有外部类对象的有参构造函数 cl = Class.forName("Outer$Inter"); // 这才是他真正的构造函数 con = cl.getDeclaredConstructor(Outer.class); con.setAccessible(true); // 既然含有外部类对象的构造函数自然在构造的时候要把外部类的对象传入 Object inter = con.newInstance(outer); //如果还有私有内部类一样的实例化当前这个私有内部类的持有外部类(也就是这个内部类成员的所属外部类也就是这里的Outer.Inter) Class<?> cll=Class.forName("Outer$Inter$InterInter"); //那么此时的默认构造函数就是持有Outer.Inter类对象的 con=cll.getDeclaredConstructor(cl); con.setAccessible(true); //要实例他就要有Outer.Inter对象 Object InterInter=con.newInstance(inter); System.out.println(InterInter); }}class Outer { private class Inter { private class InterInter{} }} JAVA内存分配与管理 请教怎样区分实体中的自然键和代理键,最好有例子? 一套面试题 大家探讨一下 最好给出源代码 给我看看我那出错了啊 如何使用foreach 急 在线等 安装springIDe时候出了缺少WST的问题 关于WSDL描述文件的问题 高分!求救! 紧急求救:客户端请求,服务器端没有返回数据,socket通讯发生意外,导致应用程序退出,请教高手,怎么处理这个异常? 拿到java的源代码怎么编译,.class文件怎么打开? Jdbc跟Hibernate操作数据库的代码如何写在一个类中 javase连接oracle9i问题
Constructor con = c.getDeclaredConstructor(new Class[]{Outer.class});
System.out.println(c.getDeclaredConstructors().length);
con.setAccessible(true);
l.newInstance();
con.newInstance(new Outer());
应该不能吧,不过在Outer类里面应该可以。这个我也不太清楚。
内部类的构造方法看似无参的,其实默认是含有外部类对象的有参构造函数.public class Test {
public static void main(String[] args) throws Exception{
Class<?> cl=Class.forName("Outer");
Constructor<?> con=cl.getDeclaredConstructor();
con.setAccessible(true);
//在实例化内部类对象之前先实例化外部类对象
Object outer=con.newInstance();
//内部类对象的构造方法看似无参其实是有含有外部类对象的有参构造函数
cl=Class.forName("Outer$Inter");
//这才是他真正的构造函数
con=cl.getDeclaredConstructor(Outer.class);
con.setAccessible(true);
//既然含有外部类对象的构造函数自然在构造的时候要把外部类的对象传入
Object inter=con.newInstance(outer);
System.out.println(inter);
}
}
class Outer {
private class Inter{
}
}
应该不能吧,不过在Outer类里面应该可以。这个我也不太清楚。谢谢各位
无聊的时候又发现了一个问题 如果私有内部类里面又有一个私有内部类 那
con = cl.getDeclaredConstructor(Outer.class);
后面那个参数不能找到内部类的class
应该怎么处理
谢谢
public class Test {
public static void main(String[] args) throws Exception {
Class<?> cl = Class.forName("Outer");
Constructor<?> con = cl.getDeclaredConstructor();
con.setAccessible(true);
// 在实例化内部类对象之前先实例化外部类对象
Object outer = con.newInstance();
// 内部类对象的构造方法看似无参其实是有含有外部类对象的有参构造函数
cl = Class.forName("Outer$Inter");
// 这才是他真正的构造函数
con = cl.getDeclaredConstructor(Outer.class);
con.setAccessible(true);
// 既然含有外部类对象的构造函数自然在构造的时候要把外部类的对象传入
Object inter = con.newInstance(outer);
//如果还有私有内部类一样的实例化当前这个私有内部类的持有外部类(也就是这个内部类成员的所属外部类也就是这里的Outer.Inter)
Class<?> cll=Class.forName("Outer$Inter$InterInter");
//那么此时的默认构造函数就是持有Outer.Inter类对象的
con=cll.getDeclaredConstructor(cl);
con.setAccessible(true);
//要实例他就要有Outer.Inter对象
Object InterInter=con.newInstance(inter);
System.out.println(InterInter);
}
}class Outer { private class Inter {
private class InterInter{}
}
}