package Generics.CustomGenerics;
/**
* @author 小王宝友
* @version 3.89
* 自定义泛型方法
* 基本语法
* 修饰符<T,R,K,......>返回类型 方法名(参数列表){
*
* }
*
* 注意事项:
* 1、泛型方法,可以定义在普通类中,也可以定义在泛型类中
* 2、当泛型方法被调用时,类型会确定
* 3、public void eat(E e){},修饰符后没有<T,R,K,...>eat方法 不是泛型方法,而只是使用了泛型
*/
public class CustomizeMethodGenerics {
public static void main(String[] args) {
Bird<Object, Object, Object> bird = new Bird<>();
Fish fish = new Fish();
//当我们调用这个普通类中的泛型方法时,传入参数后,编译器会自动检测传入的类型
fish.show("鱼");//值:鱼,类型:String
System.out.println("=====重新设定传入参数的类型=====");
fish.show(100.1);//值:100.1,类型:Double
//即,当传入类型时,泛型方法所定义的泛型类型就确定了
}
}
class Bird<T,R,M>{//可以在泛型类中也可以定义方法
public void run(){//普通方法
}
//泛型方法
//泛型方法可以使用类中所声明的泛型,也可以使用自身所声明的泛型
public <E> void fiy (E t){//尽量的和泛型类所定义的泛型不同
System.out.println(t);
}
//泛型方法可以使用类中所声明的泛型,也可以使用自身所声明的泛型
//即,在使用类声明的泛型的同时也使用了自己所声明的泛型
//K为泛型方法所声明的泛型,T为类声明的泛型
public <K> void down(T t,K k){
System.out.println();
}
//不是泛型方法
//该方法只是使用了类中所声明的泛型,并没有泛型的修饰符
//即public !<E>没有泛型修饰符! void fiy (E t)
public void bye(T t){
}
}
class Fish{//可以在普通类中定义泛型方法
//<A>是用来修饰show方法,即自定义泛型方法
public <A> A show(A t){
System.out.println("t的值:"+t);
System.out.println("t的类型:"+t.getClass().getSimpleName());
return t;
}
}
【JAVASE】对于泛型方法的使用和判定,基础语法(含注解)
最新推荐文章于 2022-05-28 09:44:43 发布