首页 理论教育 Java语言程序设计中的泛型方法

Java语言程序设计中的泛型方法

时间:2023-10-18 理论教育 版权反馈
【摘要】:到目前为止,我们所使用的泛型都是应用于整个类上。也就是说,是否拥有泛型方法,与其所在的类是不是泛型类没有关系。泛型方法使得该方法能够独立于类而产生变化。因此,如果static方法需要使用泛型能力,就必须使其成为泛型方法。运行结果如下:Example6_10类并不是泛型化的,尽管这个类和其内部的方法可以被同时泛型化,但是在这个例子中,只有f()拥有类型参数。事实上,泛型方法与自动打包避免了以前用户不得不自己编写出来的代码。

Java语言程序设计中的泛型方法

到目前为止,我们所使用的泛型都是应用于整个类上。泛型同样可以用在类中包含参数化的方法上,而方法所在的类可以是泛型类,也可以不是泛型类。也就是说,是否拥有泛型方法,与其所在的类是不是泛型类没有关系。

泛型方法使得该方法能够独立于类而产生变化。如果使用泛型方法可以取代类泛型化,那么就应该只使用泛型方法。另外,对一个static的方法而言,无法访问泛型类的类型参数。因此,如果static方法需要使用泛型能力,就必须使其成为泛型方法。

请看下面这个例子。

【例6-10】

运行结果如下:

Example6_10类并不是泛型化的,尽管这个类和其内部的方法可以被同时泛型化,但是在这个例子中,只有f()拥有类型参数。这是由该方法的返回类型前面的类型参数列表指明的。(www.xing528.com)

注意,当使用泛型类时,必须在创建对象的时候指定类型参数的值,如果没有指定类型参数,那就和使用Object类型一样。而使用泛型方法的时候,通常不必指明参数类型,因为编译器会为我们找到具体的类型,这被称为类型参数推断。因此,我们可以像调用普通方法一样调用f(),而且就好像f()被无限次地重载过,它甚至可以接受Example6_10作为类型参数。如果调用f()时传入基本类型,自动打包机制就会介入其中,将基本类型的值包装为对应的对象。事实上,泛型方法与自动打包避免了以前用户不得不自己编写出来的代码。

也可以使用泛型作为方法的返回类型,例如:

在主方法里添加:

输出结果如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈