【JavaSE系列-基础篇6】——泛型方法
2017-07-12 09:45
162 查看
泛型方法是引入自己类型参数的方法。和声明一个泛型类型是相似的,但是这个类型参数的范围是在声明的方法体内。静态的和非静态的泛型方法都是允许的,以及泛型类构造函数。
泛型方法的语法包括一个在菱形括号内的一个类型参数,并出现在方法返回类型之前。对于静态方法来说,类型参数部分必须出现在方法返回类型之前。
下面的Unit类中包含一个泛型方法compare,比较两个pair对象:
最终调用方法的语句为:
类型被明确的提供< Integer ,String >。一般来说,这个类型会被省略,编译器会自动推断它的类型,我们可以写为:
这个特性叫做类型推断,允许你向调用普通方法一样调用泛型方法,而不用指定菱形括号间的类型。
泛型方法的语法包括一个在菱形括号内的一个类型参数,并出现在方法返回类型之前。对于静态方法来说,类型参数部分必须出现在方法返回类型之前。
下面的Unit类中包含一个泛型方法compare,比较两个pair对象:
public class Util { public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) { return p1.getKey().equals(p2.getKey()) && p1.getValue().equals(p2.getValue()); } } public class Pair<K, V> { private K key; private V value; public Pair(K key, V value) { this.key = key; this.value = value; } public void setKey(K key) { this.key = key; } public void setValue(V value) { this.value = value; } public K getKey() { return key; } public V getValue() { return value; } }
最终调用方法的语句为:
Pair<Integer, String> p1 = new Pair<>(1, "apple"); Pair<Integer, String> p2 = new Pair<>(2, "pear"); boolean same = Util.<Integer, String>compare(p1, p2);
类型被明确的提供< Integer ,String >。一般来说,这个类型会被省略,编译器会自动推断它的类型,我们可以写为:
Pair<Integer, String> p1 = new Pair<>(1, "apple"); Pair<Integer, String> p2 = new Pair<>(2, "pear"); boolean same = Util.compare(p1, p2);
这个特性叫做类型推断,允许你向调用普通方法一样调用泛型方法,而不用指定菱形括号间的类型。
相关文章推荐
- 【JavaSE系列-基础篇6】——为什么使用泛型?
- 【JavaSE系列-基础篇6】——泛型原始类型
- 【JavaSE系列-基础篇6】——数组,集合,泛型宏观把控
- 【JavaSE系列-基础篇6】——泛型类型
- 【JavaSE系列-基础篇1】——面向对象编程概念之对象
- 【JavaSE系列-基础篇2】——面向对象编程概念之类
- [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型
- javase重新开始系列之集合与泛型
- [C# 基础知识系列]专题六:泛型基础篇——为什么引入泛型
- 【JavaSE系列-基础篇6】——数组
- javaSE_8系列博客——Java语言的特性(三)--类和对象(11)--从方法返回值
- [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型
- JavaSE_8系列博客——Java语言的特性(五)--接口和继承(6)--默认方法的使用场景
- 【JavaSE系列-基础篇7】——运算符
- 【JavaSE系列-基础篇6】——变量基本数据类型
- 【JavaSE系列-基础篇3】——面向对象编程概念之继承
- [C# 基础知识系列]专题六:泛型基础篇——为什么引入泛型
- [C# 基础知识系列]专题六:泛型基础篇——为什么引入泛型
- Java基础篇系列:Java泛型
- 【JavaSE系列-基础篇5】——面向对象编程概念之包