gpt4 book ai didi

java - 类型与类型变量不兼容

转载 作者:行者123 更新时间:2023-12-01 17:16:43 26 4
gpt4 key购买 nike

谁能告诉我为什么下面的代码无法编译?

class A<K> {

public <K> A() {
}

public static <K> A<K> create(Class<K> k) {
return new A<K>();
}
}


public class B<K, V> {

A<K> ak;

public <K, V> B(Class<K> klass, V v) {
ak = A.create(klass);
}
}

它失败了:

[javac] /home/.../src/B.java:17: error: incompatible types
[javac] ak = A.create(klass);
[javac] ^
[javac] required: A<K#2>
[javac] found: A<K#1>
[javac] where K#1,V,K#2 are type-variables:
[javac] K#1 extends Object declared in constructor <K#1,V>B(Class<K#1>,V)
[javac] V extends Object declared in constructor <K#1,V>B(Class<K#1>,V)
[javac] K#2 extends Object declared in class B
[javac] 1 error

这是一个 SSCCE,所以请不要问我想要完成什么。

最佳答案

  • 摆脱<K>A 的构造函数中
  • 摆脱<K, V>B 的构造函数中

构造函数不需要重新定义类的类型参数。如果您这样做,它们将被定义为新类型参数,从而隐藏类中的参数(Eclipse 会对此发出警告)。

关于java - 类型与类型变量不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21553532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com