제네릭에 대한 Java 공식 자습서를 읽는 동안 다음 T
과 같이 ‘and’연산자 ( &
) 를 사용하여 클래스 및 / 또는 더 많은 인터페이스를 확장하기 위해 유형 인수 (이 경우 )를 제한 할 수 있음을 발견했습니다 .
<T extends MyClass & Serializable>
나는 대체 &
에 ,
(실수로 여전히 작은 경고와 함께 작동).
제 질문은이 둘 사이에 차이점이 있습니까?
<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma
그리고 예제 방법 :
static <T extends MyClass & Serializable> ArrayList<T> fromArrayToCollection(T[] a) {
ArrayList<T> arr = new ArrayList<T>();
for (T o : a) {
arr.add(o); // Correct
}
return arr;
}
답변
<T extends MyClass & Serializable>
이것은 단일 유형 매개 변수 T
가 확장 MyClass
되어야하고이어야 함을 주장 합니다 Serializable
.
<T extends MyClass , Serializable>
이것은 두 개의 유형 매개 변수를 선언합니다 . 하나는 호출 T
(확장해야 함 MyClass
)과 호출 Serializable
(숨기기 java.io.Serializable
)입니다. 이것은 아마도 경고의 내용 일 것입니다.