java中怎么定义泛型的方法?使用java泛型要注意什么?

Java泛型本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法的创建中,并且java语言中引入泛型是一个较大的功能增强,那java中怎么定义泛型的方法?下面来我们就来给大家讲解一下。

1. 泛型方法的概念

方法的参数类型是泛型,而不是具体的参数。

注意:是方法的参数是泛型,而不是方法的返回值。

2. 泛型方法的定义格式

[访问权限] <泛型> 返回值类型 方法名([泛型标识 参数名称]){方法体;}

3. 泛型方法实例

publicvoid printArray(T2[] arr)
{
    for (int i = 0; i < arr.length; i++)
    {
        System.out.println(arr[i]);
    }
}

以上方法就是泛型方法,方法的参数是一个数组,但是这个数组存放的数据类型不是具体的,而是一个泛型。另外,因为这个T2泛型是我们自己定义的,不是Java官方的。

所以为了表示T2也是一种泛型标识,需要在方法的前面也需要添加泛型,用于告诉编译器T2表示泛型。

4. 注意事项

public class Person
{
    private String name;
    private int age;
    private T gender;
    ...
    public T getGender()
    {
        return gender;
    }
}

以上的getGender并不是泛型方法,因为该方法没有泛型参数,只是返回值是泛型。并且getGender方法不能被static修饰,因为被static修饰的方法不需要new对象就可以访问。而T泛型的具体类型是需要new对象的时候才指定的,两者是矛盾的。

总结 :方法的返回值是泛型的话,该方法不能被static修饰。

如果需要使用static修饰,那么也需要将该静态方法设置成泛型方法,实例如下:

public class Person
{
    private String name;
    private int age;
    private T gender;
    ...
    public staticvoid getGender(T gender)
    {
        System.out.println(gender);
    }
}

使用java泛型要注意什么?

1.在定义一个泛型类时,在“<>”之间定义形式类型参数,例如:“class TestGen”,其中“K”,“V”不代表值,而是表示类型。

2.实例化泛型对象时,一定要在类名后面指定类型参数的值(类型),一共要有两次书写。

3.泛型中并不代表继承,它是类型范围限制。

4.使用泛型时,泛型类型必须为引用数据类型,不能为基本数据类型,Java中的普通方法,构造方法,静态方法中都可以使用泛型,方法使用泛型之前必须先对泛型进行声明,可以使用任意字母,一般都要大写。

5.不可以用一个本地类型(如int float)来替换泛型。

6.运行时类型检查,不同类型的泛型类是等价的(Pair与Pair是属于同一个类型Pair),这一点要特别注意,即如果obj instance of Pai == true的话,并不代表objget First()的返回值是一个String类型。

7.泛型类不可以继承Exception类,即泛型类不可以作为异常被抛出。

8.不可以定义泛型数组。

另外,如果某个泛型类还有同名的非泛型类,不要混合使用,坚持使用泛型类。最后大家如果想要了解更多java常见问题知识,敬请关注奇Q工具网。

推荐阅读:

什么是spring框架?spring框架有哪些优点?

java程序课程书籍有哪些?java程序必读书籍!

java程序分为哪两类?java程序有什么特征?