如何覆盖正在传递到字符串方法中的 object?

How do I override an object that is being passed into a method to string?

正如标题所说,我试图将一个 object 传递给一个方法,以便我可以比较字符串。 object 没有正确转换,显示为“MediaItem@9a2”,我知道我必须使用覆盖,但我不太确定如何执行此操作。

public class MediaItem {                                                
private String title;                                               
                                            
public String getTitle() {                                              
    return title;                                               
}                                               
                                            
public void setTitle(String title) {                                                
    this.title = title;                                             
}                                               
public MediaItem(String t)                                              
{                                               
    setTitle(t);                                                
}                                               
                                            
public MediaItem()                                              
{                                               
                                            
}                                               
                                            
public boolean equals(Object obj)                                               
{                                               
String temptitle = getTitle();                                              
temptitle = temptitle.toLowerCase();                                                
temptitle = temptitle.trim();                                               
//    System.out.println(temptitle);                                                
                                            
                                            
String tempobj = obj.toString();                                                
System.out.println(tempobj);                                                
tempobj=tempobj.toLowerCase();                                              
tempobj= tempobj.trim();                                                
System.out.println(tempobj);                                                
                                            
                                            
if (temptitle.equals(tempobj))                                              
{                                               
System.out.println("this");                                             
return true;                                                
}                                               
else{                                               
return false;                                               
}                                               
                                            
}                                               
                                            
@Override                                               
public String toString()                                                
{                                               
return obj.title;                                               
}                                               
                                            
}

代码底部的重写尝试很糟糕。另外,不确定为什么所有颜色都从代码中消失了。

编辑:好的,也许我应该添加更多解释:任务是比较发送的对象和当前 object 的标题。如果它们匹配,我 return 为真。如果不是,我return假的。我唯一可以更改的是 equals(object obj) 方法中的内容。我还可以添加覆盖。就是这样。有比我尝试做的更简单的方法吗?

重写 toString() 方法是当您想为 toString() 而不是通常的对象散列代码进行一些自定义外部序列化时。要使用 equal() 比较 obj,您需要根据需要自定义 equals 方法,例如字段比较、散列比较等。

public String toString()                                                
{                                               
     return title;                                               
}                   

就足够了,您也可以使用 return this.title; 但是 this 是隐含的,因为方法中没有定义其他标题

要获得对象的人类可读表示,您应该覆盖 toString() 方法,这是正确的。但是你应该这样做:

public String toString() {
   return title; // No obj!
}
// or like that
public String toString() {
 return "MyClass{title=" + title + "}";
}

你做错的是比较对象。这是一个复杂的话题,但有一个简单的例子:

@Override
public boolean equals(Object o) {
    return o != null
        && getClass() == o.getClass()
        && Objects.equals(title.toLowerCase().trim(),
            o.title.toLowerCase().trim()); // for each field
}