package Generics.CustomGenerics;
/**
* @author 小王宝友
* @version 3.89
* 自定义泛型接口
* 基本语法
* interface 接口名 <T,R,V,.....>{
*
* }
*
* 注意事项:
* 1、接口中,静态成员也不能使用泛型,与类中不能使用泛型原因一致
* 2、泛型接口的类型,在继承接口或是实现接口时确定
* 3、没有指定泛型时,系统默认为Object类型
*/
public class CustomizeInterfaceGenerics {
public static void main(String[] args) {
}
}
interface IA extends IUsb<String,Double>{
/**
* 当IA继承了IUsb接口时,确定了泛型U,R的类型
* 当有类继承IA接口时实现方法时会将IUsb中的U,R自动的替换成IA所指定的类型
* 即,String和Double
*/
}
class AA implements IA{
@Override
public Double get(String s) {
return null;
}
@Override
public void hi(Double aDouble) {
}
@Override
public void run(Double r1, Double r2, String u1, String u2) {
}
}
//在实现接口时,也可以直接设定泛型接口的类型
//U->Integer,R->Float
//当实现IUsb接口的方法时,会使用Integer替换U,使用Float替换R
class BB implements IUsb<Integer,Float>{
@Override
public Float get(Integer integer) {
return null;
}
@Override
public void hi(Float aFloat) {
}
@Override
public void run(Float r1, Float r2, Integer u1, Integer u2) {
}
}
interface IUsb<U,R>{
//接口中的所有成员都是具有静态性质的,所以不能使用泛型修饰成员
R get(U u);
void hi(R r);
void run(R r1,R r2,U u1,U u2);
//在默认方法中也可以使用泛型
default R method(U u){
return null;
}
}
【JAVASE】对于泛型接口的基础语法和注意事项(含注解)
最新推荐文章于 2024-07-15 22:27:18 发布