我遇到了一些类似的Java代码:
public interface ITest<T1 extends IOne,T2 extends ITwo> {
boolean handle(T1 value1);
boolean handle(T2 value2);
}
public interface IOne {}
public interface ITwo {}
然后是 ITest 的实现:
public class Test implements ITest {
@Override
public boolean handle(IOne value1) {
return false;
}
@Override
public boolean handle(ITwo value2) {
return false;
}
}
请注意“Test implements ITest”中缺少类型声明。来自 ac# 世界,这让我感到惊讶,因为你不能在 c# 中做到这一点。您必须编写如下内容:
public class Test : ITest<IOne, ITwo>
我知道 Java 泛型与 c# 泛型非常不同,但我想更好地了解允许上述代码编译的 Java 代码中发生了什么?是编译器的类型推断吗?原始类型 IOne 和 ITwo 是否用于 Test 类?http://docs.oracle.com/javase/tutorial/java/generics/rawTypes.html
谢谢。