类上定义的泛型,在方法中也可以使用。但是,我们经常需要仅仅在某一个方法上使用泛型,这时候可以使用泛型方法。
调用泛型方法时,不需要像泛型类那样告诉编译器是什么类型,编译器可以自动推断出类型。
泛型方法的使用
非静态方法
非静态方法可以使用泛型类中所定义的泛型,也可以将泛型定义在方法上。
语法结构:
//无返回值方法
public <泛型标识符号> void getName(泛型标识符号 name) {
}//有返回值方法
public <泛型标识符号> 泛型标识符号 getName(泛型标识符号 name){
}
示例:
public class MethodGeneric {public <T> void setName(T name){System.out.println(name);}public <T> T getAge(T age){return age;}
}
public class Test2 {public static void main(String[] args){MethodGeneric methodGeneric = new MethodGeneric();methodGeneric.setName("lalala");Integer age = methodGeneric.getAge(123);System.out.println(age);}
}
静态方法
静态方法中使用泛型时有一种情况需要注意一下,那就是静态方法无法访问类上定义的泛型,使用必须要将泛型定义在方法上。
语法结构:
//无返回值静态方法
public static <泛型标识符号> void setName(泛型标识符号 name){
}//有返回值静态方法
public static <泛型标识符号> 泛型标识符号 getName(泛型标识符号 name){
}
示例:
public class Test4 {public static void main(String[] args){MethodGeneric methodGeneric = new MethodGeneric();methodGeneric.setFlag("lalala");Integer flag1 = methodGeneric.getFlag(123123);System.out.println(flag1);}
}