Java 对象比较
您好,我正在尝试编写一个Java比较程序,该程序使用名为MovieCard的当前对象,并将其与作为参数传递的另一个MovieCard进行比较。代码如下Java 对象比较,java,object,comparison,boolean,Java,Object,Comparison,Boolean,您好,我正在尝试编写一个Java比较程序,该程序使用名为MovieCard的当前对象,并将其与作为参数传递的另一个MovieCard进行比较。代码如下 boolean sameName(MovieCard movieCard) { if(this.MovieCard.equals(movieCard)) return true; } 错误找不到符号-变量MovieCard 如果这有什么区别的话,我的类中会在MovieCard构造函数之前列出检查。另外,我在一个初级编程课
boolean sameName(MovieCard movieCard) {
if(this.MovieCard.equals(movieCard))
return true;
}
错误找不到符号-变量MovieCard
如果这有什么区别的话,我的类中会在MovieCard构造函数之前列出检查。另外,我在一个初级编程课程中,所以我们不能使用Comparator,它需要包含它。
MovieCard
是一个类,而不是一个变量。这就是编译器告诉你的
if(this.MovieCard.equals(movieCard))
↑
你可能只需要写这个
还请注意,存在一个不返回任何内容的路径,这将不会编译
你应该做:
boolean sameName(MovieCard movieCard) {
return this.equals(movieCard);
}
或
MovieCard
是一个类,而不是一个变量。这就是编译器告诉你的
if(this.MovieCard.equals(movieCard))
↑
你可能只需要写这个
还请注意,存在一个不返回任何内容的路径,这将不会编译
你应该做:
boolean sameName(MovieCard movieCard) {
return this.equals(movieCard);
}
或
如果这个方法出现在你的MovieCard
类中,那么只要这个
就足够了
boolean sameName(MovieCard movieCard) {
if(this.equals(movieCard)) {// this is enough. this.MovieCard is wrong, as there is no variable by that name.
return true;
}
return false; // Since return true is a conditional return, but the method needs to return in any case.
}
你的方法的简化版本是
boolean sameName(MovieCard movieCard) {
return this.equals(movieCard); // Returns the result of the comparison.
}
如果查看方法名,sameName()
,看起来您希望比较类中的某个名称字段,而不是对象本身
boolean sameName(MovieCard movieCard) {
return this.getName().equals(movieCard.getName()); // Returns the result of the name comparison.
// But there is a possible NPE in the above statement.
}
如果这个方法出现在你的MovieCard
类中,那么只要这个
就足够了
boolean sameName(MovieCard movieCard) {
if(this.equals(movieCard)) {// this is enough. this.MovieCard is wrong, as there is no variable by that name.
return true;
}
return false; // Since return true is a conditional return, but the method needs to return in any case.
}
你的方法的简化版本是
boolean sameName(MovieCard movieCard) {
return this.equals(movieCard); // Returns the result of the comparison.
}
如果查看方法名,sameName()
,看起来您希望比较类中的某个名称字段,而不是对象本身
boolean sameName(MovieCard movieCard) {
return this.getName().equals(movieCard.getName()); // Returns the result of the name comparison.
// But there is a possible NPE in the above statement.
}
像
boolean sameName(MovieCard movieCard) {
if(this.equals(movieCard))
return true;
}
但您的方法似乎是检查两个对象是否具有相同的名称。如果是这样,那么您可以简单地使用
boolean sameName(MovieCard movieCard) {
if(this.name.equals(movieCard.name))
return true;
}
假设name是一个成员变量(字符串)使用like
boolean sameName(MovieCard movieCard) {
if(this.equals(movieCard))
return true;
}
但您的方法似乎是检查两个对象是否具有相同的名称。如果是这样,那么您可以简单地使用
boolean sameName(MovieCard movieCard) {
if(this.name.equals(movieCard.name))
return true;
}
假设name是一个成员变量(字符串)您必须编写
boolean sameName(MovieCard movieCard) {
if (this.equals(movieCard)){
return true;
} else{
return false;
}
}
因为this.MovieCard
指向MovieCard
类中的一个变量
除了语法错误之外,equals实现除了默认实现之外,什么都不做
记住if(this.equals(movieCard)){
只有当movieCard
和this
指向相同的引用时,这才是正确的
因为,
equals()
类的默认实现由java.lang.Object提供,该类比较内存位置,并且仅当两个引用变量指向相同的内存位置(即本质上是相同的对象)时才返回true
我想您需要重写MovieCard
类中的equals方法,以便比较MovieCard的
字段是否相同
您正朝着错误的方向前进,请参见上面链接中的示例,然后实现equals
如果MovieCard中的所有字段都等于传递对象的字段,那么这就是您要求的实现
一般来说,对于这样的等式
你必须写作
boolean sameName(MovieCard movieCard) {
if (this.equals(movieCard)){
return true;
} else{
return false;
}
}
因为this.MovieCard
指向MovieCard
类中的一个变量
除了语法错误之外,equals实现除了默认实现之外,什么都不做
记住if(this.equals(movieCard)){
只有当movieCard
和this
指向相同的引用时,这才是正确的
因为,
equals()
类的默认实现由java.lang.Object提供,该类比较内存位置,并且仅当两个引用变量指向相同的内存位置(即本质上是相同的对象)时才返回true
我想您需要重写MovieCard
类中的equals方法,以便比较MovieCard的
字段是否相同
您正朝着错误的方向前进,请参见上面链接中的示例,然后实现equals
如果MovieCard中的所有字段都等于传递对象的字段,那么这就是您要求的实现
一般来说,对于这样的等式
以上给出的所有答案都回答了您的问题,因此我也想补充一下
请记住,调用的equals
方法属于对象方法。因此,您最好重写equals
方法以满足程序的需要。重写equals时,请确保也重写hashcode
方法
以上给出的所有答案都回答了您的问题,因此我也想补充一下
请记住,调用的equals
方法属于对象方法。因此,您最好重写equals
方法以满足程序的需要。重写equals时,请确保也重写hashcode
方法
你确定你想要this.MovieCard
而不仅仅是this
?你确定你想要MovieCard
的属性吗?不是传递给方法的参数,而是属性。谢谢所有提供了很好答案的人!你确定你想要this.MovieCard
而不仅仅是this
?你决定了吗laere属性Moviecard
?不是传递给方法的参数,而是属性。感谢所有提供了伟大答案的人!这也不会编译。在此之后删除Moviecard
返回此值。等于(Moviecard)
-据我所知,OP的问题是,sameName
是MovieCard
的一种方法。这也不会编译。请在之后删除MovieCard
re