邂逅il 2022-05-11 03:28 采纳率: 66.7%
浏览 39

我已经重写过toString了,为什么直接get的时候获取到的是引用数据类型,输出测试过了输出的是重写过的toString,但是还是需要调用到具体类的get方法才能获取的是String类型的。

public class StudentTest {
public static void main(String[] args) {
Student student=new Student();
student.show();//先调用studen里面的方法,证明重写已经成功了
System.out.println(student.getA().equals("Tom"));
System.out.println(student.getA().getName().equals("Tom"));
}
}
public class Student {
private Att a=Att.N;

public Att getA() {
    return a;
}
public void setStatus(Att status) {
    this.a = status;
}
public void show() {
    System.out.println(a);
    System.out.println(getA());        
}

}
public class Att{
private String name;

public Att(String name) {
    super();
    this.name = name;
}
public static final Att N=new Att("Tom");

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

@Override
public String toString() {
    return name;
}    

}
student.getA()和student.getA().getName()不应该都是String类型吗?

  • 写回答

1条回答 默认 最新

  • BCS-点心 2022-05-11 09:46
    关注

    student.getA()这个方法返回值是Att对象,跟有没有重写toString没关系
    student.getA().getName()这个返回是String,因为方法返回类型就是String

    使用方法,返回值是什么,你获得的就是什么
    就像你买个快递,箱子上写着水果,那你从里面拿出的就应该是水果(本类谱系对象),而不应该是鸡肉(非本类谱系对象),更不能拿出一个苹果核(处理后的对象),除了拿出水果的情况,其它情况你都会打电话投诉的

    评论

报告相同问题?

问题事件

  • 创建了问题 5月11日

悬赏问题

  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。
  • ¥15 GitHubssh虚拟机连接不上