위에서 계속 java generics
위에서는 T의 보유자인 class GenDemo<T>
클래스를 사용합니다. 는 범위에 제한이 없으며 실제로 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 GenDemo<T extends Collection>
제한된 제네릭을 사용하면 보유자 T의 유형이 Collection의 구현 클래스가 될 수만 있다고 판단됩니다. 컬렉션 클래스가 전달되면 번역 중에 오류가 보고됩니다.
참고: <T extends Collection>
는 extends 키워드를 사용하지만, 여기서 확장은 상속이 아니라 여기에 있어야 합니다. 유형은 이해됩니다. T는 xx 인터페이스를 구현하는 구현 클래스이거나 xx 클래스를 상속하는 하위 클래스이기 때문입니다.
여기의 예는 제네릭 메서드의 유형 제한만 보여줍니다. 제네릭 클래스의 유형 매개변수 제한에 동일한 규칙이 사용되지만 다음과 같이 클래스 선언의 헤드에 추가됩니다. :
public class Demo<T extends Comparable & Serializable> { // T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了}
여기서의 확장은 확장과 구현의 원래 개념을 통합합니다. 즉, 확장은 인터페이스와 상속된 클래스를 구현하는 데 사용됩니다. 그러나여전히 응용 시스템을 따르면 Java는 하나의 클래스만 상속할 수 있고 여러 인터페이스를 구현할 수 있습니다. 즉,
<T extends SomeClass & interface1 & interface2 & interface3>
위의 java 제네릭에 이어
위에서는 < 클래스를 사용합니다. 🎜> 실제로 Object와 동일한 홀더 T의 범위에는 제한이 없습니다. class GenDemo<T>
그러나 때로는 매개변수 유형을 특정 인터페이스나 클래스의 구현이나 하위 클래스로 전달해야 할 때도 있습니다. 무제한 개체
따라서 제한된 제네릭을 사용하세요. 다시 한 번 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 GenDemo<T extends Collection>
번역 중 오류가 보고됩니다.
참고: 는 <T extends Collection>
extends 키워드를 사용하지만, 여기서 확장은 상속이 아니라 여기에 있어야 합니다. 유형은 이해됩니다. T는 xx 인터페이스를 구현하는 구현 클래스이거나 xx 클래스를 상속하는 하위 클래스이기 때문입니다. 여기의 예는 제네릭 메서드의 유형 제한만 보여줍니다. 제네릭 클래스의 유형 매개변수 제한에 동일한 규칙이 사용되지만 다음과 같이 클래스 선언의 헤드에 추가됩니다. :
public class Demo<T extends Comparable & Serializable> { // T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了}
그러나 여전히 응용 시스템을 따르면 Java는 하나의 클래스만 상속할 수 있고 여러 인터페이스를 구현할 수 있습니다. 즉,
<T extends SomeClass & interface1 & interface2 & interface3>