1. 泛型类中所定义的泛型,在方法中也可以使用。但是,我们经常需要仅仅在某一个方法 上使用泛型,这时候可以使用泛型方法。 泛型方法是指将方法的参数类型定义成泛型,以便在调用时接收不同类型的参数。类型 参数可以有多个,用逗号隔开,如:。定义时,类型参数一般放到返回值前面。 调用泛型方法时,不需要像泛型类那样告诉编译器是什么类型,编译器可以自动推 断出类型来。

非静态方法

可以使用定义在类中的泛型,也可以用定义在泛型方法中的泛型

定义格式
1、public <泛型表示符> void getName(泛型表示符 name){

}

2、public <泛型标识符> 泛型标识符 getName(泛型标识符 name){

}

package CommonClass.fanxing.fanxingMethod;

public class MethodGeneric {
    public <T> void setName(T name){
        System.out.println(name);
    }

    public <T> T getName(T name){
        return name;
    }
}

image.png

静态方法

 静态方法中使用泛型时有一种情况需要注意一下,那就是静态方法无法访问类上定义的 泛型;如果静态方法操作的引用数据类型不确定的时候,必须要将泛型定义在方法上。 

public static <泛型表示符号> void setName(泛型表示符号 name){

}

public static <泛型表示符号> 泛型表示符号 getName(泛型表示符号 name){

}

image.png

package CommonClass.fanxing.staticFanxing;

public class StaticMethodGeneric {
    //无返回值的
    public static <T> void setFlag(T flag){
        System.out.println(flag);
    }
    //有返回值的
    public static <T> T getFlag(T flag){
        return flag;
    }
}
package CommonClass.fanxing.staticFanxing;

public class Test {
    public static void main(String[] args) {
        StaticMethodGeneric.getFlag("好好学习"); //直接从类调用静态方法
        StaticMethodGeneric.setFlag("天天向上");

        String name=StaticMethodGeneric.getFlag("正确的事");
        System.out.println(name);
        Integer age=StaticMethodGeneric.getFlag(24);
        System.out.println(age);
    }
}

泛型方法与可变参数

在泛型方法中,泛型也可以定义可变参数类型。

public <泛型表示符号> void showMsg(泛型表示符号… agrs){

}

public class MethodGeneric {
    public <T> void method(T...args){
        for(T t:args){
            System.out.println(t);
        }
    }
}
public class Test {
    public static void main(String[] args) {
        MethodGeneric methodGeneric=new MethodGeneric();  //调用非静态方法不能直接类调用
        methodGeneric.method(1,2,3,4);
        methodGeneric.method("a","b","c","d");
    }
}