ArrayList не использовать переопределенное равенство

У меня проблема с получением списка ArrayList для правильного использования замещающего равного.проблема в том, что я пытаюсь использовать равные только для проверки одного ключевого поля и использую ArrayList.contains () для проверки существования объекта с правильным полем. Вот пример

public class TestClass  {
    private static class InnerClass{    
    private final String testKey;
    //data and such

    InnerClass(String testKey, int dataStuff) {
        this.testKey =testKey;
        //etc
    }
    @Override
    public boolean equals (Object in) {
        System.out.println("reached here");
        if(in == null) {
        return false;
        }else if( in instanceof String) {
        String inString = (String) in;
        return testKey == null ? false : testKey.equals(inString);
        }else {
        return false;
        }       
    }       
    }

    public static void main(String[] args) {    
    ArrayList<InnerClass> objectList = new ArrayList<InnerClass>();
    //add some entries
    objectList.add(new InnerClass("UNIQUE ID1", 42));
    System.out.println( objectList.contains("UNIQUE ID1")); 
    }    
}

Что меня беспокоит, так это то, что я не только получаю ложь на выходе, но я также не получаю результат «достигнуто здесь».

Есть ли у кого-нибудь идеи, почему это переопределение полностью игнорируется? Есть ли какие-то тонкости с переопределениями и внутренними классами, о которых я не знаю?

Изменить: Возникли проблемы с сайтом, поэтому я не могу отметить ответ. Спасибо за быстрый ответ: да, я недосмотрел, что это String .equals, который вызывается, а не мой собственный. Думаю, сейчас это старомодные проверки

10
задан K.Barad 6 July 2011 в 13:13
поделиться