[java] Java 제네릭에서 ‘&’와 ‘,’의 차이점은 무엇입니까?

제네릭에 대한 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)입니다. 이것은 아마도 경고의 내용 일 것입니다.


답변