看今天看关于class类里的newInstance()方法说是调用类中缺省的构造方法,说有一个好处是在不知道类的名字的时候创建一个类对象
具体程序流程是if(args.length!=1){
return;
}
else{
try{
Class c=Class.forName(args[0]);
Point p=(Point)c.newInstance();//问题在这里
}
catch(Exception e){
e.toSing();
}
}
Point类已经创建完,在上面的问题中这不就声明了Point类型了嘛,并且后面还把这个对象强制转换成point类型付给p,这怎么能说是不知道类名字呢?能否具体解释一下,给我一个实例证明...
具体程序流程是if(args.length!=1){
return;
}
else{
try{
Class c=Class.forName(args[0]);
Point p=(Point)c.newInstance();//问题在这里
}
catch(Exception e){
e.toSing();
}
}
Point类已经创建完,在上面的问题中这不就声明了Point类型了嘛,并且后面还把这个对象强制转换成point类型付给p,这怎么能说是不知道类名字呢?能否具体解释一下,给我一个实例证明...
Class c=Class.forName(args[0]);
Point p=(Point)c.newInstance();//c.newInstance()肯定是不知道类名的吧,但是已经实例化了说有一个好处是在不知道类的名字的时候创建一个类对象,就是指的这个实例化以后还是必须要通过强制类型转化指定到那个具体类(Point)的。
A a = A.newInstance();
应该是A a = (A)A.class.newInstance();
这个也是调用class A的无参数构造方法构造一个对象,由于这个是Class类的方法,返回的是Object,需要做类型转化,同时newInstance是调用的无参数构造方法,所以class A中必须要有无参数构造方法,而且可以被调用,否则会产生异常。
一般来说newInstance方法用于动态加载Class并产生实例的情况下使用,singleton模式和这个方法没有什么关系,而且多次调用netInstance方法产生的对象是不同的。