读书人

Java反射获取构造函数有关问题

发布时间: 2013-02-19 11:11:40 作者: rapoo

Java反射获取构造函数问题

public class test {
public static void main(String[] str) throws Exception{

Class c = A.class;
Constructor con = c.getConstructor(String.class);
con.newInstance("you");

}

class A{
public A(String str){
System.out.println(str);
}
}
}

如果反射获取的是内部类,获取构造函数那里会报 java.lang.NoSuchMethodException 异常,不是内部类就可以运行,为啥呢?
[解决办法]
代码里面不支持变颜色,就再发一次吧!
import java.lang.reflect.Constructor;

public class Test
{
public static void main(String[] str) throws Exception
{
Class c = A.class;

//建议楼主看一下以下几行代码及注释
Constructor[] cons = c.getConstructors();//在这里数组中只有一个元素

for(Constructor ccc : cons)
{
Class[] pas = ccc.getParameterTypes();
for(Class cc : pas)
{
//会打印Test和String两个
//因为内部类的构造函数中默认有一个外围类的引用
System.out.println(cc);
}
}
///////////////////////////////////////////////////
//////////////////////////////////////////////////
Constructor con = c.getConstructor(Test.class,String.class);//所以这里需要多加一个参数
con.newInstance(new Test(),"you");//这里构造的时候也需要多加一个参数
}

class A
{
public A(String str)
{
System.out.println(str);
}
}
}

读书人网 >J2EE开发

热点推荐