小问题,Object对象的转换

byeceg 2011-08-11 01:28:50

Object o=null;
Iterator iterator=list.iterator();
while(iterator.hasNext()){
if(type.equals("A")) {
o = (ClassA) iterator.next();
}else {
o = (ClassB)iterator.next();
}
System.out.println(o.getName());
}
//这样转换在使用的时候报错
The method getName() is undefined for the type Object

该如何转换?
...全文
193 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
商科程序员 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 byeceg 的回复:]System.out.println(a.getClass().getName());//这样写没有问题[/Quote]
24K純帥 2011-08-11
  • 打赏
  • 举报
回复
把打印语句放到if..else中呗
巽谷雨 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 tteinstein 的回复:]
你的 o 还是 Object类型的,object里面 哪来的getName方法
[/Quote]是啊
tteinstein 2011-08-11
  • 打赏
  • 举报
回复
你的 o 还是 Object类型的,object里面 哪来的getName方法
byeceg 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kingbryant 的回复:]

java多台思想,父类引用指向子类对象,但对于子类中特有的属性和方法父类引用是无可奈何的,对于你声明的
Object o = null;o这个引用只能调用Object本身具有的方法,所以那样的写法确实行不通。
[/Quote]
嗯。是这样的
kingbryant 2011-08-11
  • 打赏
  • 举报
回复
java多台思想,父类引用指向子类对象,但对于子类中特有的属性和方法父类引用是无可奈何的,对于你声明的
Object o = null;o这个引用只能调用Object本身具有的方法,所以那样的写法确实行不通。
xiaojinhua1988 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huntor 的回复:]

ClassA/ClassB 中有没有定义 getName方法?

type 变量的声名在哪里?
[/Quote]
+1
fengnenglu 2011-08-11
  • 打赏
  • 举报
回复
Object o=null;
Iterator iterator=list.iterator();
while(iterator.hasNext()){
o = iterator.next();
if(type.equals("A")) {
ClassA a = (ClassA) o;
System.out.println(a.getName());
}else {
ClassB b = (ClassB) o;
System.out.println(b.getName());

}
}


这个我不是很了解你的业务,我只是按照自己的想法写的

feifeikub 2011-08-11
  • 打赏
  • 举报
回复
LZ是不是在ClassA类里面有一个方法是
public void getName(){
...
}
如果没有的话是完全会报错的。
List里面存的也是Object类型,你能存进去,那取出来就可以直接转Object类型
你报的错是:The method getName() is undefined for the type Object
1.看下你的ClassA类里面有没有getName()
2. 你看下你getName() 的方法声明了类型没有,声明了又是什么类型。

如果检查不出错误,请把ClassA类的代码帖出来看看。
soli11722984 2011-08-11
  • 打赏
  • 举报
回复
不行,Object只是根类,根本没有getName这个方法,所以这个一定是自有类的方法,要转到自有类才可以调用得到

或者用反射。。。。。。
byeceg 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 soli11722984 的回复:]

我说Object的API什么时候有getName方法了???
[/Quote]
我那样的写法行不通吗?该怎么转换?
soli11722984 2011-08-11
  • 打赏
  • 举报
回复
我说Object的API什么时候有getName方法了???
byeceg 2011-08-11
  • 打赏
  • 举报
回复
第一种写法,可能是Object还没有被转换,以至于不认识,ClassA或ClassB中的方法。
byeceg 2011-08-11
  • 打赏
  • 举报
回复


Object o=null;
Iterator iterator=list.iterator();
while(iterator.hasNext()){
/*
if(type.equals("A")) {
o = (ClassA) iterator.next();
}else {
o = (ClassB)iterator.next();
}*/
ClassA a = (ClassA) iterator.next();
System.out.println(a.getName());//这样写没有问题


}
type只是个参数,用来判断调用哪个类?
The method getName() is undefined for the type Object

huntor 2011-08-11
  • 打赏
  • 举报
回复
ClassA/ClassB 中有没有定义 getName方法?

type 变量的声名在哪里?
黎某人 2011-08-11
  • 打赏
  • 举报
回复
你的type是什么 你的if块只会执行一个,你的list里存的都是什么

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧