C#からJava:T:new()構文

user295190:

いくつかのC#コードをJavaに移植しています。where構文、特にnew()に問題があります。whereがJavaのジェネリックに似ていることを理解しています。

Javaでnew()引数を複製するにはどうすればよいですか?

「new()制約により、コンパイラーは、提供されるすべての型引数にアクセス可能なパラメーターなし(またはデフォルト)のコンストラクターが必要であることを認識させます。」-MSDN

つまり:

public class BAR<T> : BAR
       where T : FOO, new()

これが私がクレタスのソリューションをどのように実装したかです:

public class BAR<T extends FOO> extends ABSTRACTBAR {
    public BAR(T t) throws InstantiationException, IllegalAccessException{ 
        t.getClass().newInstance();
        this.value = t;
    }
}
クレタス:

ジェネリックはC#とJavaの間で根本的に異なるため、Javaでそれを複製することはできません。Javaは型消去を使用するため、ジェネリック型引数は(ほとんど)実行時に保持されません。ジェネリック型引数の要素を作成する場合は、クラスインスタンスを渡す必要があります。

public class Bar<T extends Foo> {
  private final Class<T> clazz;

  public class Bar(Class<T> clazz) {
    this.clazz = clazz;
  }

  public T newInstance() {
    return clazz.newInstance(); // this will throw checked exceptions
  }
}

編集:ジェネリック型引数のランタイムタイプセーフティの問題をカバーするためだけに型消去のために、Javaにはネイティブ型セーフティがないことは明らかです:ジェネリック型引数にはランタイム型がありません。ただし、解決策があります。あなたが使用するCollections.checkedList()

List<String> list = Collections.checkedList(new ArrayList<String>(),
                      String.class);

このコレクションは、でないものを挿入しようとすると例外をスローするようになりましたString

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Java構文からGroovy構文へ

分類Dev

Strange Razor C#からVBへの構文

分類Dev

Java構文をMyclassのC#に変換する方法obj = new Myclass(){public override mymethod()}

分類Dev

IF AND OR C#の構文は何ですか

分類Dev

C#からVB.netへ-2次元配列の構文の問題

分類Dev

C#初期化構文

分類Dev

C#構文エラー

分類Dev

C#構文とは;; 平均?

分類Dev

演算子C#に基づいてソースコードから構文をトークン化する方法

分類Dev

C#からVB.netへの変換-構文のショートカット

分類Dev

エラーが表示されない構文でPythonからC#に問題が発生する

分類Dev

JustMock構文からMoqへ

分類Dev

'はc#で{}'構文とはどういう意味ですか?

分類Dev

C#構文データはどこにありますか

分類Dev

C#で `using a = Func <>;`構文とは何ですか?

分類Dev

このC#の奇妙な構文は何ですか?

分類Dev

PythonのForループ構文からJavaへ

分類Dev

C#の{get; set}構文のように使用されるJavaScript構文は何ですか?

分類Dev

c#(web)linq構文がvb(windows)linq構文と異なるのはなぜですか?

分類Dev

ConfluenceのC#構文の強調表示

分類Dev

認識されないC#構文

分類Dev

VSCodeのC#ラムダ構文ToListAsync

分類Dev

C#正規表現構文

分類Dev

不正な構文エラー-c#

分類Dev

JS RegEx for C#「ラムダ構文」

分類Dev

C# ラムダ式と @item 構文

分類Dev

F#からC#デリゲートを呼び出す-よりクリーンな構文はありますか?

分類Dev

IN構文糖衣は= ANYからですか?

分類Dev

文字列から文を取得する方法C#文字列操作

Related 関連記事

  1. 1

    Java構文からGroovy構文へ

  2. 2

    Strange Razor C#からVBへの構文

  3. 3

    Java構文をMyclassのC#に変換する方法obj = new Myclass(){public override mymethod()}

  4. 4

    IF AND OR C#の構文は何ですか

  5. 5

    C#からVB.netへ-2次元配列の構文の問題

  6. 6

    C#初期化構文

  7. 7

    C#構文エラー

  8. 8

    C#構文とは;; 平均?

  9. 9

    演算子C#に基づいてソースコードから構文をトークン化する方法

  10. 10

    C#からVB.netへの変換-構文のショートカット

  11. 11

    エラーが表示されない構文でPythonからC#に問題が発生する

  12. 12

    JustMock構文からMoqへ

  13. 13

    'はc#で{}'構文とはどういう意味ですか?

  14. 14

    C#構文データはどこにありますか

  15. 15

    C#で `using a = Func <>;`構文とは何ですか?

  16. 16

    このC#の奇妙な構文は何ですか?

  17. 17

    PythonのForループ構文からJavaへ

  18. 18

    C#の{get; set}構文のように使用されるJavaScript構文は何ですか?

  19. 19

    c#(web)linq構文がvb(windows)linq構文と異なるのはなぜですか?

  20. 20

    ConfluenceのC#構文の強調表示

  21. 21

    認識されないC#構文

  22. 22

    VSCodeのC#ラムダ構文ToListAsync

  23. 23

    C#正規表現構文

  24. 24

    不正な構文エラー-c#

  25. 25

    JS RegEx for C#「ラムダ構文」

  26. 26

    C# ラムダ式と @item 構文

  27. 27

    F#からC#デリゲートを呼び出す-よりクリーンな構文はありますか?

  28. 28

    IN構文糖衣は= ANYからですか?

  29. 29

    文字列から文を取得する方法C#文字列操作

ホットタグ

アーカイブ