我有一个班的人:
class Person{
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
,我想这样做:
public static void main(String[] args) {
Object o = new Person("Person a");
String personName = (Person)o.getName();
}
我得到的是编译错误:无法解析“object”中的方法“getname”。当我在技术上铸造时它怎么不起作用 o
至 Person
?
经过一番试验,我把代码改为 String personName = ((Person)o).getName();
,编译得很好。不幸的是,我仍然不明白这和以前的尝试有多大的不同。
2条答案
按热度按时间xfyts7mz1#
cast运算符的优先级低于方法调用的优先级。
((Person)o).getName()
意味着你投o
到Person
,然后打电话getName()
在上面。(Person)o.getName()
意思是你打电话来getName()
在o
,然后将结果强制转换为Person
. 自o
是一个Obejct
而且没有一个getName()
方法,这行代码将无法编译。u1ehiz5o2#
在下面的陈述中
((Person)o).getName();