您的位置:首页 > 编程语言 > Java开发

【JavaSE系列-基础篇6】——泛型方法

2017-07-12 09:45 162 查看
泛型方法是引入自己类型参数的方法。和声明一个泛型类型是相似的,但是这个类型参数的范围是在声明的方法体内。静态的和非静态的泛型方法都是允许的,以及泛型类构造函数。

泛型方法的语法包括一个在菱形括号内的一个类型参数,并出现在方法返回类型之前。对于静态方法来说,类型参数部分必须出现在方法返回类型之前。

下面的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);


这个特性叫做类型推断,允许你向调用普通方法一样调用泛型方法,而不用指定菱形括号间的类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java se