邂逅il 2022-05-11 03:54 采纳率: 66.7%
浏览 45
已结题

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

ublic class StudentTest {
public static void main(String[] args) {
Student student=new Student();
student.show();
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类型吗?

  • 写回答

4条回答 默认 最新

  • 拾光师 2022-05-11 08:17
    关注

    首先你的getA

    public Att getA() {
        return a;
    }
    

    返回的是Att对象,肯定是类型的,如果你要获取字符串,需要自己去调用toString()方法

    至于在show()中为什么会直接输出你重写的toString

    public void show() {
        System.out.println(a);
        System.out.println(getA());        
    }
    

    这是因为在System.out.println中对于引用类型对象内部会调用toString方法

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 已采纳回答 5月11日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?