java泛型方法怎么调用?java泛型方法如何定义?

泛型方法是在调用方法的时候指明泛型的具体类型 ,我们在开发java的时候,会遇到java泛型方法的调用,可是这对于新手java来说,有些难度,那下面我们就给大家讲解一下java泛型方法怎么调用?

java泛型方法怎么调用.png

在调用泛型方法的时候,可以指定泛型,也可以不指定泛型。在不指定泛型的情况下,泛型变量的类型为 该方法中的几种类型的同一个父类的最小级,直到Object。在指定泛型的时候,该方法中的几种类型必须是该泛型实例类型或者其子类。

class Test
{
    public static void main(String[] args)
    {
        //不指定泛型的时候
        int a1 = add(1, 2); //这两个参数都是Integer,所以T为Integer类型
        Number b1 = add(1, 1.2); //这两个参数一个是Integer,以风格是Float,所以取同一父类的最小级,为Number
        Object c1 = add(1, "my"); //这两个参数一个是Integer,以风格是Float,所以取同一父类的最小级,为Object
        //指定泛型的时候
        int a = Test.add(1, 2); //指定了Integer,所以只能为Integer类型或者其子类
        // int b = Test.add(1, 2.2);//编译错误,指定了Integer,不能为Float
        Number c = Test.add(1, 2.2); //指定为Number,所以可以为Integer和Float
    }
    //这是一个简单的泛型方法
    public staticT add(T x, T y)
    {
        return x;
    }
}

java泛型方法如何定义?

泛型方法,是在调用方法的时候指明泛型的具体类型 。

定义格式:

修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }

例如:

/**
 *
 * @param t 传入泛型的参数
 * @param <T> 泛型的类型
 * @return T 返回值为T类型
 * 说明:
 *   1)public 与 返回值中间<T>非常重要,可以理解为声明此方法为泛型方法。
 *   2)只有声明了<T>的方法才是泛型方法,泛型类中的使用了泛型的成员方法并不是泛型方法。
 *   3)<T>表明该方法将使用泛型类型T,此时才可以在方法中使用泛型类型T。
 *   4)与泛型类的定义一样,此处T可以随便写为任意标识,常见的如T、E等形式的参数常用于表示泛型。
 */
public < T > T genercMethod(T t)
{
    System.out.println(t.getClass());
    System.out.println(t);
    return t;
}

调用方法时,确定泛型的类型

public static void main(String[] args)
{
    GenericsClassDemo < String > genericString = new GenericsClassDemo("helloGeneric"); //这里的泛型跟下面调用的泛型方法可以不一样。
    String str = genericString.genercMethod("hello"); //传入的是String类型,返回的也是String类型
    Integer i = genericString.genercMethod(123); //传入的是Integer类型,返回的也是Integer类型
}

这里我们可以看下结果:

class java.lang.String
hello
class java.lang.Integer
123

这里可以看出,泛型方法随着我们的传入参数类型不同,他得到的类型也不同。泛型方法能使方法独立于类而产生变化。

这样就可以将java泛型定义好了,其实使用泛型的好处还是很多的,能够编译期的类型安全,还能避免类型强转的麻烦!最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。

推荐阅读:

java写游戏需要的工具有哪些?Java能开发大型游戏吗?

idea怎么加图片?IDEA如何配置颜色与字体?

redis分布式锁实现原理是什么?redis分布式锁有哪些应用场景?