首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

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

2013-02-19 
Java反射获取构造函数问题public class test {public static void main(String[] str) throws Exception{C

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);
}
}
}

热点排行