gpt4 book ai didi

java - (Person)o.getName() 和 ((Person)o).getName() 之间的区别

转载 作者:行者123 更新时间:2023-12-03 07:37:23 26 4
gpt4 key购买 nike

我有类人:

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();
}
我得到的是编译错误:无法解析“对象”中的方法“getName”。当我从技术上转换 o 时它是如何不起作用的至 Person ?
经过一些实验,我将代码更改为 String personName = ((Person)o).getName(); ,编译得很好。不幸的是,我仍然不明白它与之前的尝试有什么不同。

最佳答案

转换运算符的优先级低于方法调用。((Person)o).getName()表示你投了oPerson ,然后调用getName()在上面。(Person)o.getName()表示您调用 getName()o ,然后将结果转换为 Person .由于oObejct并且没有 getName()方法,这行代码不会编译。

关于java - (Person)o.getName() 和 ((Person)o).getName() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65441426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com