java反射中的newInstance的使用 5

代码如下classA{privateinti;publicvoidset(inti){this.i=i;}publicintget(){returnthis.i;}}cl... 代码如下
class A{
private int i;

public void set(int i){
this.i=i;
}
public int get(){
return this.i;
}
}

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");
System.exit();
}

//利用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);
//System.out.println(obj.get());
}
}
obj=c.newInstance();求问obj指向的是哪里?newInstance返回的类型只能使用Object接收?
请教大神解答下,谢谢,中金酬谢
展开
 我来答
71号吧友
推荐于2017-05-23
知道答主
回答量:17
采纳率:0%
帮助的人:4.5万
展开全部
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
}
}
}
匿名用户
2013-12-01
展开全部
其实类就是一个对象么。object就是对象的意思。
object就是泛指所有的类,而我们常用的 A a = new A();这种写法就是具体化了。其实也可以写成Object ojb = new A();

newIntance()就是对象的实例化,返回的一个对象,如果知道具体对象的时很么的话,也可以直接用该对象来接受 A a = c.newInstance()
追问
我也是这么认为的,但是为什么不能用obj访问我的get、set方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-01
展开全部
Object obj=Class.forName("A").newInstance();

这个obj就是A类的一个实例。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣鸾OJ
2015-10-03 · TA获得超过1629个赞
知道小有建树答主
回答量:1136
采纳率:96%
帮助的人:116万
展开全部
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
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式