当前位置: 代码迷 >> Java相关 >> [求助]能帮我解析一下constructor中的方法 newInstance(Object... inita ...
  详细解决方案

[求助]能帮我解析一下constructor中的方法 newInstance(Object... inita ...

热度:496   发布时间:2007-03-11 15:25:15.0
[求助]能帮我解析一下constructor中的方法 newInstance(Object... initargs)的功
看了好几遍书,还是没有理解透.
搜索更多相关的解决方案: constructor  Object  initargs  newInstance  解析  

----------------解决方案--------------------------------------------------------

根据构造函数来生成对象啊

其中initargs就是你这个对象的构造函数的参数,如果你的构造函数是无参的,你就一个也不要传,这个列表和你构造函数的参数列表是一样的,只不过,当是基本数据类型传入的时候,需要一个包装类来包装它,但是JDK1.5也可以直接传入基本数据类型了,因为编译器会帮你自动包装或者解包


----------------解决方案--------------------------------------------------------

一语惊醒梦中人,版主真是理解的深透,你这样一说,比书上讲得通俗易懂多了,谢谢!另外想请你帮我分析一下下面这段代码!
import java.lang.reflect.*;

class ClassTest
{
public static void main(String[] arg)
{

if (arg.length!=1)
{
return;
}
try
{
Class c=Class.forName(arg[0]);
Constructor[] cns=c.getDeclaredConstructors();
Class[] params=cns[0].getParameterTypes();
Object[] paramevalue=new Object[params.length];
for(int i=0;i<params.length;i++)
{
if(params[i].isPrimitive())
{
paramevalue[i]=new Integer(i+10);
}
}
Object o=cns[0].newInstance(paramevalue);
Method[] me=c.getDeclaredMethods();
for(int j=0;j<me.length;j++)
{
System.out.println(me[j]);
}
me[0].invoke(o,null);//此处我的想法是想调用Point类中的output()方法,不知null处该如何写才可以调用.
}           //反正现在这样运行会抛出错误.

catch(Exception e)
{

}

}

}
class Point
{


int x;
int y;

public Point (int x,int y)
{
System.out.println("x="+x+";y="+y);

}

void output()
{
System.out.println("y=");
}
}
上面红色地方


----------------解决方案--------------------------------------------------------
以下是引用千里冰封在2007-3-11 15:37:19的发言:

根据构造函数来生成对象啊

其中initargs就是你这个对象的构造函数的参数,如果你的构造函数是无参的,你就一个也不要传,这个列表和你构造函数的参数列表是一样的,只不过,当是基本数据类型传入的时候,需要一个包装类来包装它,但是JDK1.5也可以直接传入基本数据类型了,因为编译器会帮你自动包装或者解包

就是说,把参数直接写在构造方法里面也是一样的,对吧?


----------------解决方案--------------------------------------------------------
  相关解决方案