해당 목록에 개체가 생성되었습니다. 메서드를 사용하여 개체가 이미 있는지 여부를 확인하고 싶습니다. 이를 위해 equals()
메서드를 재정의합니다. 모든 것이 완벽합니다. 그러나 String
과 int
에 대해 동일한 작업을 시도하면 equals()
무시가 작동하지 않습니다. 왜 이런 식으로? 방금 참조 용 샘플 코드를 게시했습니다.문자열과 Int에 대해 같음
public class Test
{
private int x;
public Test(int n)
{
x = n;
}
public boolean equals(Object o)
{
return false;
}
public static void main(String[] args)
{
List<Test> list = new ArrayList<Test>();
list.add(new Test(3));
System.out.println("Test Contains Object : " + list.contains(new Test(3))); // Prints always false (Equals override)
List<String> list1 = new ArrayList<String>();
list1.add("Testing");
String a = "Testing";
System.out.println("List1 Contains String : " + list1.contains(a)); // Prints true (Equals override not working)
}
}
입니다. Test 개체에 대해 equals를 명시 적으로 재정의했습니다. –
나는 그 질문을 이해하지 못한다. 당신은 문자열리스트를 가지고 있고,리스트는 당신이 추가 한 문자열을 포함하고,'contains'는 그만큼을 나타냅니다. 'String'에 대해서도 똑같은 일을 할 수없고, String을 확장하려고하면 컴파일되지 않습니다. –