基本语法:

    修饰符返回类型 方法名(参数列表){

    }

    注意细节:

    1. 泛型方法,可以定义在普通类中,也可以定义在泛型类中
    2. 当泛型方法被调用时,类型会确定
    3. public void eat(E e)0,修饰符后没有 eat方法不是泛型方法,而是使用了泛型 ```java package test;

    import java.util.ArrayList;

    public class Main { public static void main(String[] args) { Car car = new Car(); car.fly(“宝马”, 100);//当调用方法时,传入参数,编译器,就会确定类型 System.out.println(“=======”); car.fly(300, 100.1);//当调用方法时,传入参数,编译器,就会确定类型

    1. //测试
    2. //T->String, R-> ArrayList
    3. Fish<String, ArrayList> fish = new Fish<>();
    4. fish.hello(new ArrayList(), 11.3f);
    5. }

    }

    //泛型方法,可以定义在普通类中, 也可以定义在泛型类中 class Car {//普通类

    1. public void run() {//普通方法
    2. }
    3. //说明 泛型方法
    4. //1. <T,R> 就是泛型
    5. //2. 是提供给 fly使用的
    6. public <T, R> void fly(T t, R r) {//泛型方法
    7. System.out.println(t.getClass());//String
    8. System.out.println(r.getClass());//Integer
    9. }

    }

    class Fish {//泛型类 public void run() {//普通方法 } public void eat(U u, M m) {//泛型方法

    1. }
    2. //说明
    3. //1. 下面hi方法不是泛型方法
    4. //2. 是hi方法使用了类声明的 泛型
    5. public void hi(T t) {
    6. }
    7. //泛型方法,可以使用类声明的泛型,也可以使用自己声明泛型
    8. public<K> void hello(R r, K k) {
    9. System.out.println(r.getClass());//ArrayList
    10. System.out.println(k.getClass());//Float
    11. }

    }

    1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/21705001/1639204514073-23316b4d-a819-40fb-a18b-5b031b7b78ed.png#clientId=ua5cd2ab9-d789-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=343&id=u013b1dd2&margin=%5Bobject%20Object%5D&name=image.png&originHeight=287&originWidth=630&originalType=binary&ratio=1&rotation=0&showTitle=false&size=164907&status=done&style=none&taskId=u2eb429a8-764d-4059-a525-d9ef2b0e8a5&title=&width=753)
    2. <a name="idaYQ"></a>
    3. # 案例:
    4. ```java
    5. package test;
    6. public class Main {
    7. public static void main(String[] args) {
    8. //T->String, R->Integer, M->Double
    9. Apple<String, Integer, Double> apple = new Apple<>();
    10. apple.fly(10);//10 会被自动装箱 Integer10, 输出Integer
    11. apple.fly(new Dog());//Dog
    12. }
    13. }
    14. class Apple<T, R, M> {//自定义泛型类
    15. public <E> void fly(E e) { //泛型方法
    16. System.out.println(e.getClass().getSimpleName());
    17. }
    18. //public void eat(U u) {}//错误,因为U没有声明
    19. public void run(M m) {
    20. } //ok
    21. }
    22. class Dog {
    23. }

    image.png