[解決済み] Javaでジェネリッククラスをインスタンス化する【重複】について
2022-04-26 03:01:46
質問
Javaのジェネリックが.Netにやや劣るのはわかるが。
ジェネリッククラスがあります
Foo<T>
をインスタンス化する必要があります。
T
で
Foo
をパラメータなしのコンストラクタで使用します。Java の制限を回避するにはどうしたらよいでしょうか?
解決方法は?
一つの方法は
Bar.class
(または、興味のあるタイプなら何でも構いません - 適切な
Class<T>
を参照)、その値をフィールドとして保持します。
public class Test {
public static void main(String[] args) throws IllegalAccessException,
InstantiationException {
Generic<Bar> x = new Generic<>(Bar.class);
Bar y = x.buildOne();
}
}
public class Generic<T> {
private Class<T> clazz;
public Generic(Class<T> clazz) {
this.clazz = clazz;
}
public T buildOne() throws InstantiationException, IllegalAccessException {
return clazz.newInstance();
}
}
public class Bar {
public Bar() {
System.out.println("Constructing");
}
}
もうひとつの方法は、ファクトリーインターフェースを用意し、ジェネリッククラスのコンストラクターにファクトリーを渡す方法です。これはより柔軟で、リフレクションの例外を心配する必要がありません。
関連
-
Error: java.lang.NoClassDefFoundError: クラス XXXX を初期化できませんでした
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] 汎用クラスやメソッドのメンバからTの型を取得する方法
-
[解決済み] メソッドの戻り値の型を汎用的にするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
java の例外が発生しました java
-
Spring Boot による HTTPS アクセスの設定
-
javaで非静的な解を静的な参照にすることができない
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
自動配線された依存性のインジェクションに失敗しました。
-
javaでクラスを作成すると、enclosing classでないように見える
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について