关于java反射,需要大家解析下

来源:百度知道 编辑:UC知道 时间:2024/06/11 01:00:42
import java.lang.reflect.*;
class ClassTest
{
public static void main(String[] args)
{

if(args.length!=1)
{
return;
}
try
{
Class c=Class.forName(args[0]);
Constructor[] cons=c.getDeclaredConstructors();
Class[] params=cons[0].getParameterTypes();//getParameterTypes这是取什么?数据型?
Object[] paramValues=new Object[params.length];//不明白!params的长度有什么关系
for(int i=0;i<params.length;i++)
{
if(params[i].isPrimitive())
{
paramValues[i]=new Integer(i+3); //还是不明白这个paramValues是什么?
}
}
Object o=cons[0].newInstance(paramValues);//这个好像是实例,然后传参数?
Method[] ms=c.getDeclaredMethods();//取方法
ms[0].invoke(o,null);//实现方法
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
class Point
{
static
{
System.out.println("Loading Point");
}

Class[] params=cons[0].getParameterTypes()
取得构造方法的参数类型。类型是放在数组中的,比如构造方法public ClassA(String str, int i);调用次方法返回的是一个数组{String.class, int.class};

Object[] paramValues=new Object[params.length]; 这里肯定和参数长度有关系了哦,paramValues在后面是要传给构造方法,参数长度不一致怎么传?

Object o=cons[0].newInstance(paramValues);这里,会根据你传的参数的类型,虚拟机会自动去寻找匹配的构造方法。要是paramValues的长度和params.length不一样,你认为它会找得到么?调用此构造方法,获得该类的对象。

不懂!

没分.....
楼上是错的....
别信他....
有分我就告诉你.....