Java:型パラメーターを持つプライベートコンストラクターへのアクセス
2023-07-05 19:27:11
質問
これは javaのプライベートコンストラクタに関するこの質問 .
以下のようなクラスがあるとします。
class Foo<T>
{
private T arg;
private Foo(T t) {
// private!
this.arg = t;
}
@Override
public String toString() {
return "My argument is: " + arg;
}
}
をどのように構築すればよいのでしょうか?
new Foo("hello")
をどのように構築するのでしょうか?
回答
ベースとなるのは jtahlborn の回答 を参考にすると、以下のようになります。
public class Example {
public static void main(final String[] args) throws Exception {
Constructor<Foo> constructor;
constructor = Foo.class.getDeclaredConstructor(Object.class);
constructor.setAccessible(true);
Foo<String> foo = constructor.newInstance("arg1");
System.out.println(foo);
}
}
どのように解決するのですか?
クラスを取得し、T の下限を持つ単一の引数 (この場合は Object) を取るコンストラクタを見つけ、そのコンストラクタに強制的にアクセスできるようにする必要があります (この例では
setAccessible
メソッドを使って)アクセス可能にし、最後に希望の引数でそれを呼び出します。
関連
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
API の戻り値を処理するために ResponseEntity を使用する
-
Java の double データ型における 0.0 と -0.0 の問題
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] 特定のUnicode文字を含むコメントでのJavaコードの実行が許可されているのはなぜですか?
-
[解決済み] 型名の後の括弧は、newで違いがあるのでしょうか?
-
[解決済み] Javaオプションパラメータ
-
[解決済み] Javaリフレクションを用いた静的なプライベートfinalフィールドの変更
-
[解決済み】Javaで異なるクラスからプライベートフィールドの値を読み取る方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
強制型変換について
-
Javaジェネリックを1つの記事で
-
-bash: java: コマンドが見つからない 解決方法
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
ApiModel と @ApiModelProperty の使用法
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題