Java泛型与C#中的关键字

时间:2012-05-25 12:00:12

标签: c# java generics where

我在C#项目中有一个看起来像这样的方法

public T AddEC<T>() where T : EntityComponent, new() {
    if (!HasEC<T>())
    {
      T nComponent = new T();
    }
}

现在我刚刚开始正常使用Java Generics,但我不知道我是如何移植这样的方法,或者如果由于语言限制它甚至可能有人帮忙?

2 个答案:

答案 0 :(得分:2)

这是一篇非常好的文章。

http://www.jprl.com/Blog/archive/development/2007/Aug-31.html

从那个来源

  

使用“mini”指定Java类型和方法约束   表达语言“在'&lt;'中和'&gt;'声明泛型类型   参数。对于具有约束的每个类型参数,语法   是:

TypeParameter ListOfConstraints 
     

其中ListOfConstraints是'&amp;' - 其中一个的分隔列表   以下约束:

     
      
  • 在Generic上指定基类或已实现的接口   使用以下命令键入Argument:extends BaseOrInterfaceType
  •   
     

('&amp;'必须用'代替','因为','分隔每个通用名称   类型参数。)

答案 1 :(得分:2)

这是一个例子

class GenericClass<T extends Number & Comparable<T>> {
    void print (T t) {
        System.out.println (t.intValue ()); // OK
    }
}

在这个例子中,Number和Comparable是它们出现在C#类声明的where子句中的约束。