Java中两个不同类中的相同泛型类型

时间:2015-01-14 09:23:47

标签: java generics

我有两个不同的类:

class A<K,V> {
  B b = new B;

  public V get(K k) {
     return b.get(k);
  }
}

class B<K,V> {
  V v;

  public V get(K k) {
     return v;
  }
}

我在A类的get方法中遇到了不兼容的类型错误。

这是否意味着A类的V型与B级的V型不同? 在这种情况下,我该如何解决这个问题? 我可以在返回之前简单地将它强制转换为V吗?

2 个答案:

答案 0 :(得分:2)

B中使用V参数化A。这样编译器可以确保您的类B将返回V类型的对象。

class A<K,V> {
  B<K,V> b = new B<K,V>;

  public V get(K k) {
     return b.get(k);
  }
}

答案 1 :(得分:2)

将班级B b = new B;内的A更改为B<K,V> b = new B<>();

这可确保变量K的{​​{1}}定义中VB引用的类型与{{1}定义中的类型匹配}}