我有两个不同的类:
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吗?
答案 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}}定义中V
和B
引用的类型与{{1}定义中的类型匹配}}