我需要澄清 Object 的 equal 方法中的 String[] 比较。 下面是我的代码快照。当我执行这段代码时,它给出 true 和 false 而不是 true 和 true。 同样在我的例子中,Task 类为每次调用生成唯一的 ID。 我究竟做错了什么?任何建议将不胜感激。
public class JobTask extends Task {
String[] args;
public WFTask(String[] args) {
this.args = args;
}
@Override
public boolean equals(Object obj) {
if (! ( obj instanceof String[] ) ){
return false;
}
String[] arguments = (String[] ) obj;
boolean ret = Arrays.equals(this.args , arguments );
return ret;
}
@Override
public void execute(TaskExecutionContext context) throws RuntimeException {
--------------
--------------
}
public static void main(String[] args) {
String[] arg1 = {"a","b","c"};
String[] arg2 = {"a","b","c"};
System.out.println( Arrays.equals(arg1,arg2));
JobTask t1 = new JobTask(arg1);
JobTask t2 = new JobTask(arg2);
System.out.println( t1.equals(t2));
}
}
public abstract class Task {
private Object id = GUIDGenerator.generate();
public Task() {
}
Object getId() {
return id;
}
public abstract void execute(TaskExecutionContext context) throws RuntimeException;
}
最佳答案
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
JobTask other = (JobTask)obj;
if (!Arrays.equals(args, other.args))
return false;
return true;
}
关于java - 如何为具有字符串数组的类覆盖 equals()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155684/