我正在做一个通用的方法来获取对象和字符串。通用方法]扩展JAVA中的多个类型参数
它工作在第一这样的..
public static <K, V> V getValue(Pair<K,V> _pair, String k){ ... }
我想,也许它的工作原理是在主类
但我想结合型延伸到childPair没有大的.. 要限制这个..访问?直到ChildPair行,而不是在GrandChildPair中唤醒。 所以我第一次尝试在方法定义,
public static <K extends ChildPair<K,V>, V extends ChildPair<K,V> V getValue (
,但肯定这是愚蠢的,所以我搜索过有关多个类型参数在Java中延伸,但我暂时还没有发现.. 我也许3小时发现其他单一类型婴儿车延伸的例子,但我无法找到扩展一般 泛型(可能不善于搜索..)
有什么我可以做吗?
public class Util {
///define method
//// //Type parameters //return type// method name (prams...) {
public static (Pair extends ChildPair) V getValue (Pair<K,V> _pair, String k) {
if (k != _pair.getK()) return null;
else return _pair.getV();
}
}
public class Pair<K, V> {
private K k;
private V v;
Pair(K k, V v) {
this.k = k;
this.v = v;
}
public K getK() {
return k;
}
public V getV() {
return v;
}
}
public class ChildPair<K, V> extends Pair<K, V> {
public ChildPair(K k, V v) {
super(k, v);
}
}
public class GrandChildPair<K, V> extends ChildPair<K, V> {
public GrandChildPair(K k, V v) {
super(k, v);
}
}
public class Main {
public static void main(String[] args) {
Pair<String, Integer> pair = new Pair<>("someone", 35);
Integer age = Util.getValue(pair, "someone");
System.out.println(age);
ChildPair<String, Integer> childPair = new ChildPair<>("gh", 20);
Integer childAge = Util.getValue(childPair, "sss");
System.out.println(childAge);
}
}
如果我正确地阅读此内容,则不需要任何通配符限制幻想。只要你的论点是'ChildPair'。 –
yshavit
我不太了解你的符号,Child
Sweeper
假设你的意思是'Pair'是'ChildPair'的一个子类,它是'GrandChildPair'的子类,并且你希望方法需要'ChildPair',那么你的方法签名应该是:'public static V getValue (ChildPair _Pair,串K)' –
Andreas