>  기사  >  Java  >  Java의 제네릭에 대한 심층적인 설명

Java의 제네릭에 대한 심층적인 설명

黄舟
黄舟원래의
2017-02-24 09:52:341381검색


위에서 계속 java generics

1. Restricted generics

  위에서는 T의 보유자인 class GenDemo8742468051c85b06f0a0af9e3e506b5c 클래스를 사용합니다. 는 범위에 제한이 없으며 실제로 Object와 동일합니다.
그러나 때로는 무제한 Ojbect
가 아닌 특정 인터페이스나 클래스의 구현 또는 하위 클래스인 매개변수 유형을 전달해야 하므로 다음을 사용합니다. 제한된 제네릭. 다시 한 번 T를 Collection 구현에 대한 변명으로 사용합니다.

import java.util.collection;public class GenDemo<T extends Collection>  {
    private T t;    public GenDemo(T t) {        this.t = t;
    }    public void setT(T t) {        this.t = t;
    }    public T getT(){        return T;
    }
}

  class GenDemo2a9303dff3eed1b561b75d0dce9e5a56 제한된 제네릭을 사용하면 보유자 T의 유형이 Collection의 구현 클래스가 될 수만 있다고 판단됩니다. 컬렉션 클래스가 전달되면 번역 중에 오류가 보고됩니다.

참고: 2a9303dff3eed1b561b75d0dce9e5a56extends 키워드를 사용하지만, 여기서 확장은 상속이 아니라 여기에 있어야 합니다. 유형은 이해됩니다. T는 xx 인터페이스를 구현하는 구현 클래스이거나 xx 클래스를 상속하는 하위 클래스이기 때문입니다.
여기의 예는 제네릭 메서드의 유형 제한만 보여줍니다. 제네릭 클래스의 유형 매개변수 제한에 동일한 규칙이 사용되지만 다음과 같이 클래스 선언의 헤드에 추가됩니다. :

public class Demo<T extends Comparable & Serializable> {
    // T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了}

2. 다중 인터페이스 제한

여기서의 확장은 확장과 구현의 원래 개념을 통합합니다. 즉, 확장은 인터페이스와 상속된 클래스를 구현하는 데 사용됩니다. 그러나여전히 응용 시스템을 따르면 Java는 하나의 클래스만 상속할 수 있고 여러 인터페이스를 구현할 수 있습니다. 즉,

<T extends SomeClass & interface1 & interface2 & interface3>

3. 와일드카드 제네릭

위의 java 제네릭에 이어

1. 제한된 제네릭

위에서는 실제로 Object와 동일한 홀더 T의 범위에는 제한이 없습니다. class GenDemo8742468051c85b06f0a0af9e3e506b5c그러나 때로는 매개변수 유형을 특정 인터페이스나 클래스의 구현이나 하위 클래스로 전달해야 할 때도 있습니다. 무제한 개체
따라서 제한된 제네릭을 사용하세요. 다시 한 번 T를 Collection 구현에 대한 변명으로 사용합니다.

import java.util.collection;public class GenDemo<T extends Collection>  {
    private T t;    public GenDemo(T t) {        this.t = t;
    }    public void setT(T t) {        this.t = t;
    }    public T getT(){        return T;
    }
}

  

제한된 제네릭을 사용하면 보유자 T의 유형이 Collection의 구현 클래스가 될 수만 있다고 판단됩니다. 컬렉션 클래스가 전달되면 class GenDemo2a9303dff3eed1b561b75d0dce9e5a56번역 중 오류가 보고됩니다.

참고: 2a9303dff3eed1b561b75d0dce9e5a56extends 키워드를 사용하지만, 여기서 확장은 상속이 아니라 여기에 있어야 합니다. 유형은 이해됩니다. T는 xx 인터페이스를 구현하는 구현 클래스이거나 xx 클래스를 상속하는 하위 클래스이기 때문입니다. 여기의 예는 제네릭 메서드의 유형 제한만 보여줍니다. 제네릭 클래스의 유형 매개변수 제한에 동일한 규칙이 사용되지만 다음과 같이 클래스 선언의 헤드에 추가됩니다. :

public class Demo<T extends Comparable & Serializable> {
    // T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了}

2. 다중 인터페이스 제한

여기서의 확장은 확장과 구현의 원래 개념을 통합합니다. 즉, 확장은 인터페이스와 상속 클래스를 구현하는 데 사용됩니다.

그러나 여전히 응용 시스템을 따르면 Java는 하나의 클래스만 상속할 수 있고 여러 인터페이스를 구현할 수 있습니다. 즉,

<T extends SomeClass & interface1 & interface2 & interface3>

3. 와일드카드 제네릭

위 내용은 자바 제네릭에 대한 심층적인 내용으로, 보다 자세한 내용은 PHP 중국어 홈페이지(www.php.php)를 참고하시기 바랍니다. CN)!



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.