英文:
Incompatible types Void and Object - Java Generics
问题
以下代码会抛出异常:
"Incompatible types. Required Sample<Void> but create was inferred to Sample<T>. Incompatible equality constraints: Void and Object".
public class SampleClass{
public static <T> Sample<T> create(String str) {}
}
Sample<Void> sample = SampleClass.create("abc");
英文:
Below code throws
"Incompatible types. Required Sample<Void> but create was inferred to Sample<T>. Incompatible equality constraints:Void and Object".
public class SampleClass{
public static <T> Sample<T> create(String str) {}
}
Sample<Void> sample = SampleClass.create("abc");
答案1
得分: 0
它实际上确实有效。
完整示例:
public class SampleClass {
public static void main(String[] args) {
Sample<Void> sample = SampleClass.create("abc");
}
public static <T> Sample<T> create(String str) {
return null;
}
private static class Sample<T> {
}
}
(在JDK 11下)编译并且可以正常执行。
英文:
It actually does work.
Full example:
public class SampleClass {
public static void main(String[] args) {
Sample<Void> sample = SampleClass.create("abc");
}
public static <T> Sample<T> create(String str) {
return null;
}
private static class Sample<T> {
}
}
Compiles and executes just fine (with JDK 11).
专注分享java语言的经验与见解,让所有开发者获益!
评论