我的情况可以总结如下:
interface Hello<T> {
};
interface World<T, U> {
void apply(Hello<T> t, Hello<U> u);
}
现在让我们说我想打World.apply
而不关心嵌套类型,所以我尝试了以下操作:
Hello<?> hello = ...;
World<?, ?> world = ...;
world.apply(hello, hello);
但是我得到了这个晦涩的信息:
java: incompatible types: Hello<capture#1 of ?> cannot be converted to Hello<capture#2 of ?>
这是怎么了?除了诉诸原始类型,还有其他方法可以实现吗?
将world
投射到World<Object, Object>
是一种方法,但是还有什么更好的方法吗?
答案 0 :(得分:3)
Integer
表示尚不清楚它实际上是什么数据类型。未知和未知是彼此不兼容的,因为实际上它可能是例如String
和Hello<?> hello = new HelloImpl<Integer>();
World<?, ?> world = new WorldImpl<String,String>();
:
Date.now()
类型在编译时未知。