java反射中的newInstance的使用

2024年11月04日 10:34
有3个网友回答
网友(1):

class Test01{

public static void main(String args[]) {

Class c = null;
try {
c = Class.forName("A");// 创建了A类的Class对象
} catch (ClassNotFoundException e) {
System.out.println("ClassNotFoundException");
}

// 利用A类的Class对象来创建A类的实例对象
Object obj = null;
try {
obj = c.newInstance();// obj指向的A类的对象
} catch (InstantiationException e) {
System.out.println("InstantiationException");
} catch (IllegalAccessException e) {
System.out.println("IllegalAccessException");
}
// obj.set(10); // 肯定不行的,Object咋会有这个方法呢?
// System.out.println(obj.get());

// 请这样,并且newInstance默认调用无参构造器,更多请google
A a = new A();
a.set(1);
System.out.println(a.get());

A aa;
try {
aa = A.class.newInstance();
aa.set(2);
System.out.println(aa.get());
} catch (InstantiationException e) {
// TODO Auto-generated catch block
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
}

try {
Class Clazz = Class.forName("A");
A aaa = (A) Clazz.newInstance();
aaa.set(2);
System.out.println(aaa.get());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
} catch (InstantiationException e) {
// TODO Auto-generated catch block
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
}
}
}

网友(2):

其实类就是一个对象么。object就是对象的意思。
object就是泛指所有的类,而我们常用的 A a = new A();这种写法就是具体化了。其实也可以写成Object ojb = new A();

newIntance()就是对象的实例化,返回的一个对象,如果知道具体对象的时很么的话,也可以直接用该对象来接受 A a = c.newInstance()

网友(3):

Object obj=Class.forName("A").newInstance();

这个obj就是A类的一个实例。