泛型方法:泛型不仅仅可以作用在类上,成为泛型类。也可以在方法中包含泛型。这样你的方法就会适用任何类型啦。同时我们要知道的泛型类和泛型方法没有任何关系就像(抽象类和抽象方法一样)。
    定义泛型方法:只需要将泛型参数类别放在返回值之前。

    1. public class GenericMtheds {
    2. public <T> void test(T t){//泛型方法
    3. System.out.println(t.getClass().getName());
    4. }
    5. public static void main(String[] args) {
    6. GenericMtheds genericMtheds = new GenericMtheds();
    7. genericMtheds.test(" ");
    8. genericMtheds.test(1);
    9. genericMtheds.test(0.f);
    10. genericMtheds.test(5.5d);
    11. genericMtheds.test(new UserService());
    12. }
    13. }
    1. 我们可以向test方法中传入任何类型的参数,也不需要我们提前指定类型,编译器为帮我们指定类类型。如果传入的是基本类型,则自己动打包机制就会加入其中,将基本类型的值包装为对应的对象。<br />** 注意事项:**<br /> 1.对于一个static的方法而言,无法去访问泛型类的类型参数(静态方法内部不能访问非静态域)。
    1. public class GenericMethods <T>{
    2. T t;
    3. public <T> void f(T x){
    4. }
    5. public static void info(T t){
    6. }
    1. <br /> 2.静态方法也可以定义为泛型方法,此时的静态方法就可以去访问泛型类中类型参数
    1. public class GenericMethods <T>{
    2. T t;
    3. public static <T> void info1(T t){
    4. }
    5. }
    1. 3.fianl修饰的方法也可以定义为泛型方法
    1. public final <T> void info(){
    2. }

    可变参数与泛型方法两者之间可以很好的共存。

    1. import java.util.ArrayList;
    2. import java.util.List;
    3. public class GnericVarargr {
    4. public static <T> List<T> maker(T...args){
    5. List<T> result = new ArrayList<>();
    6. for (T itme:args){
    7. result.add(itme);
    8. }
    9. return result;
    10. }
    11. public static void main(String[] args) {
    12. List<String> a = maker("A");
    13. System.out.println(a);
    14. a=maker("A","B","C");
    15. System.out.println(a);
    16. a=maker("ABCDEFGHIJQLMN".split(""));
    17. System.out.println(a);
    18. List<Character> c = maker('1','2','3');
    19. System.out.println(c);
    20. }
    21. }
    1. 我们可以看出,通过泛型和可比参数的结合,我们在给list容器指定一个类型后,可以传入任意长度的参数。