使用格式
interface 接口名<自定义无意义占位符> {
接口中的泛型不可以用于成员变量中,由于接口的成员变量默认是final修饰的,定义时必须初始化,但是当前的泛型的类型是不明确的,无法对成员变量进行初始化。
接口中的泛型只可以用于成员方法。
}
遵从带有自定义泛型的接口的类,一种是在遵从的过程中明确告知泛型的具体类型,一种是在创建类对象时明确泛型的具体类型。
class TypeA<T> implements A<String>
正确
接口的泛型明确接口中的方法,使用泛型对应的具体数据类型,类声明的泛型用于自定义约束自己类内的方法
class TypeA<E> implements A<T>
错误
接口中的泛型没有明确自己的数据类型,也无法通过类创建对象明确泛型对应的具体数据类型,无法编译。
package com.reviewedu;
/**
* @author HZF
*/
interface A<T> {
void test(T t);
}
class TypeA<T> implements A<T> {
@Override
public void test(T t) {
System.out.println("可以自定义类和接口的泛型具体类型:" + t);
}
}
class TypeB<T> implements A<String> {
@Override
public void test(String s) {
System.out.println(s);
}
}
public class Demo3 {
public static void main(String[] args) {
TypeA<Integer> typeA = new TypeA<Integer>();
typeA.test(10);
TypeB typeB = new TypeB();
typeB.test("已经确定泛型类型");
}
}
可以自定义类和接口的泛型具体类型:10
已经确定泛型类型
Process finished with exit code 0