2017-12-04 2 views
-1

方法は、活字体に、これらのJavaメソッドのシグネチャを翻訳するための最良のワットです:活字体で活字体:ジェネリックメソッドのオーバーロード

public <E> Expression<E> setProjection(Expression<E> e) { 
    //return ... 
} 

public Expression<?> setProjection(Expression<?>... o) { 
    for (Expression<?> e : o) 
     this.setProjection(Projections.tuple(o)); 
    return //... 
} 

答えて

1

(私は物事を正しく解釈していた場合)あなたは、単一のメソッドのシグネチャとの両方を満たすことができます。 ..

public setProjection<E>(...e: Expression<E>[]): Expression<E> { 

これは1つの式または多くの式で呼び出すことができます。あなたが1つを渡したのか、複数を渡したのかを知りたい場合は、eの長さをテストできます。

Eについて気にしない場合は、setProjection<any>を使用して動的にすることができます。

その他の注意:TypeScriptのオーバーロードはすべて1つのメソッドを装飾しています。これにより、単一の実装に導かれます。これにより、シグネチャが各方法でオーバーロードされなくなります。オーバーロードは次のようになります。

public setProjection<E>(e: Expression<E>): Expression<E>; 
public setProjection<E>(...e: Expression<E>[]): Expression<E>; 
public setProjection<E>(...e: Expression<E>[]): Expression<E> { 

しかし、オーバーロードされていないバージョンと同じです。

質問がオーバーロードの側面であるため、メソッドの実装の詳細については触れていません。