4

私はこのようなC#プロジェクトにメソッドを持っています

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

最近、Javaジェネリックを適切に使用し始めたばかりですが、このようなメソッドをどのように移植するか、または言語の制約により可能であるかどうかはわかりません。誰か助けてもらえますか?

4

2 に答える 2

2

これはとても良い記事です。

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

そのソースから

Java の型とメソッドの制約は、ジェネリック型パラメーターを宣言する '<' と '>' 内で "ミニ式言語" を使用して指定されます。制約を持つ各型パラメーターの構文は次のとおりです。

TypeParameter ListOfConstraints 

ListOfConstraints次の制約の 1 つを「&」で区切ったリストです。

  • 以下を使用して、ジェネリック型引数で基本クラスまたは実装されたインターフェイスを指定する: extends BaseOrInterfaceType

(「,」の代わりに「&」を使用する必要があります。これは、「,」が各ジェネリック型パラメーターを区切るためです。)

于 2012-05-25T12:01:38.223 に答える
2

ここに例があります

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

この例の Number と Comparable は、C# クラス宣言の where 句に表示される制約です。

于 2012-05-25T12:05:45.180 に答える