邂逅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 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值