由于某种原因,当我运行我的应用程序时,没有得到演讲的名称,而是出现了一些随机字符。我不确定为什么。提前致谢!

public Lecture(String lecturename) {
    this.lecturename = lecturename;
    listofwork = new ArrayList<Work>();
}

public String toString(Lecture lecture) {
    return lecture.lecturename;
    }

    /////////// IN ANOTHER ACTIVITY   /////////////////////

    Lecture test = new Lecture("TEST");
    Toast.makeText(getApplicationContext(), test.toString(), Toast.LENGTH_LONG).show();


而且,我得到的是whatsmymark.Lecture@41abcf8,而不是干杯说“ TEST”。我有一种感觉,它返回的是实际的演讲对象而不是字符串。但是,我找不到导致代码如此简单的原因。

最佳答案

您正在编写将toString作为参数的Lecture,并在调用不包含参数的toString()。如果将方法定义更改为没有参数,则将正确覆盖Object.toString()

public String toString() {
    return this.lecturename;
}


如果由于某种原因不想更改方法定义,则另一种选择是显式调用您的版本,但是我相信您会同意这看起来有点多余。

Lecture test = new Lecture("TEST");
Toast.makeText(getApplicationContext(), test.toString(test), Toast.LENGTH_LONG).show();

10-08 15:27