具有类型约束的Java通用接口与C#通用

多姆克

我遇到了一些类似于以下的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;
    }
}

请注意,“测试实现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

谢谢。

贝文Q

当Java编译时

T1 extends IOne

它将所有T1实例替换为IOne

所以

public boolean handle(T1 value1) {
    return false;
}

变成

public boolean handle(IOne value1) {
    return false;
}

所以实际的接口Itest是

public interface ITest {
    boolean handle(IOne value1);
    boolean handle(ITwo value2);
}

这样做是因为T1的实例将始终能够分配给IOne,而T2的实例将始终能够分配给ITwo。

编译Test时,它正在寻找与接口中具体方法匹配的方法,并且不会抱怨,因为它会找到满足其所要查找内容的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有接口类型约束的通用类型的RTTI

来自分类Dev

具有类型约束的Swift通用数组

来自分类Dev

具有类型约束的Swift通用数组

来自分类Dev

具有约束的Scala通用类型

来自分类Dev

具有通用类类型约束的通用方法

来自分类Dev

具有不同类型的通用接口

来自分类Dev

具有通用类型的接口API调用

来自分类Dev

具有通用类型的接口和方法

来自分类Dev

C#中ValueType的通用类型约束

来自分类Dev

C#中ValueType的通用类型约束

来自分类Dev

接口中的C#多层通用类型

来自分类Dev

C#试图简化通用类型接口的通用扩展功能

来自分类Dev

C#试图简化通用类型接口的通用扩展功能

来自分类Dev

C# 的通用约束

来自分类Dev

如何将通用类型参数用作声明为具有类型约束的接口的属性的类型参数?

来自分类Dev

具有多种负载类型的 C# 通用树

来自分类Dev

与具有接口类型的通用对象的接口

来自分类Dev

基类和接口的 C# 通用约束

来自分类Dev

具有某些接口类型的通用C#类未使用第一个接口的成员实现其他接口

来自分类Dev

具有扩展通用枚举的通用接口

来自分类Dev

具有接口约束的通用方法与具有接口参数的方法之间的区别

来自分类Dev

多次实现相同的通用接口,该通用接口包含具有不同类型参数的属性

来自分类Dev

具有newInstance的Java通用类型参数

来自分类Dev

具有通用类型的Java collect()流

来自分类Dev

具有newInstance的Java通用类型参数

来自分类Dev

返回具有通用类型的接口时出错

来自分类Dev

具有通用类型的接口-是否过度设计?

来自分类Dev

实现Java接口时,确保“ Object o”参数具有相同的通用类型

来自分类Dev

具有List <T>的Java通用接口不接受对象类型

Related 相关文章

  1. 1

    具有接口类型约束的通用类型的RTTI

  2. 2

    具有类型约束的Swift通用数组

  3. 3

    具有类型约束的Swift通用数组

  4. 4

    具有约束的Scala通用类型

  5. 5

    具有通用类类型约束的通用方法

  6. 6

    具有不同类型的通用接口

  7. 7

    具有通用类型的接口API调用

  8. 8

    具有通用类型的接口和方法

  9. 9

    C#中ValueType的通用类型约束

  10. 10

    C#中ValueType的通用类型约束

  11. 11

    接口中的C#多层通用类型

  12. 12

    C#试图简化通用类型接口的通用扩展功能

  13. 13

    C#试图简化通用类型接口的通用扩展功能

  14. 14

    C# 的通用约束

  15. 15

    如何将通用类型参数用作声明为具有类型约束的接口的属性的类型参数?

  16. 16

    具有多种负载类型的 C# 通用树

  17. 17

    与具有接口类型的通用对象的接口

  18. 18

    基类和接口的 C# 通用约束

  19. 19

    具有某些接口类型的通用C#类未使用第一个接口的成员实现其他接口

  20. 20

    具有扩展通用枚举的通用接口

  21. 21

    具有接口约束的通用方法与具有接口参数的方法之间的区别

  22. 22

    多次实现相同的通用接口,该通用接口包含具有不同类型参数的属性

  23. 23

    具有newInstance的Java通用类型参数

  24. 24

    具有通用类型的Java collect()流

  25. 25

    具有newInstance的Java通用类型参数

  26. 26

    返回具有通用类型的接口时出错

  27. 27

    具有通用类型的接口-是否过度设计?

  28. 28

    实现Java接口时,确保“ Object o”参数具有相同的通用类型

  29. 29

    具有List <T>的Java通用接口不接受对象类型

热门标签

归档