java - 如何为具有字符串数组的类覆盖 equals()?

标签 java

我需要澄清 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/

相关文章:

java - 制作一个单jar java应用程序

java - 区分消息对话框中 no, close 选项的行为

java - Maven/Spring/Hibernate NoSuchMethodError : org. hibernate .engine.jdbc.spi.JdbcServices.getConnectionProvider()

java - 如何为 JavaFX WebView URL 设置代理?

java - 同一类的两个不同对象(如 o1 和 02)具有不同的主题(如 t1 和 t2),它们可以同时执行同步方法吗

java - Web服务soap身份验证与javax问题

java - 在 java 中公开 SOAP 端点以进行文件上传

java - 为什么我的 Java gui 会调整标签大小?

java - 没有可用的 'ru.spb.repository.UserRepository' 类型的合格 bean : expected at least 1 bean which qualifies as autowire candidate

java - Hibernate监听器性能和loadeventlistener