// 이 프로그램은 무엇을 출력할까? (315-316쪽) publicclassSetList { publicstaticvoidmain(String[] args) { Set<Integer> set = newTreeSet<>(); List<Integer> list = newArrayList<>();
for (inti= -3; i < 3; i++) { set.add(i); list.add(i); } for (inti=0; i < 3; i++) { set.remove(i); list.remove(i); } System.out.println(set + " " + list); } }
실행결과
1 2 3 4
[-3, -2, -1] [-2, 0, 2]
Process finished with exit code 0
위에 실행결과를 보면 우리가 예상했던 결과와 틀리다.
위에서는 ArrayList에서 remove를 다중정의 했기 때문이다. 그래서 같은 메소드를 호출해주기 위해 아래처럼 코드를 수정했다.
// 이 프로그램은 무엇을 출력할까? (315-316쪽) publicclassSetList { publicstaticvoidmain(String[] args) { Set<Integer> set = newTreeSet<>(); List<Integer> list = newArrayList<>();
for (inti= -3; i < 3; i++) { set.add(i); list.add(i); } for (inti=0; i < 3; i++) { set.remove(i); list.remove((Integer) i); } System.out.println(set + " " + list); } }
D:\repo\codeTestJDK8\src\main\java\com\github\sejoung\codetest\methods\overloading\Lamda.java Error:(13, 11) java: reference to submit is ambiguous both method <T>submit(java.util.concurrent.Callable<T>) in java.util.concurrent.ExecutorService and method submit(java.lang.Runnable) in java.util.concurrent.ExecutorService match Error:(13, 18) java: incompatible types: cannot infer type-variable(s) T (argument mismatch; bad return type in method reference void cannot be converted to T)
메서드를 다중정의할 때, 서로 다른 함수형 인터페이스라도 같은 위치의 인수로 받아서는 안된다.
String 클래스를 보면 contentEquals 메소드는 forward 시켜 버리는 방법을 선택했다 같은 객체를 입력하면 동일한 기능을 수행한다.