[解決済み] なぜClass.newInstance()は "悪 "なのか?
2023-01-28 20:51:19
疑問点
ライアン・デルッキ 依頼 ここで へのコメント #3 で トム・ホーティン の回答です。
なぜClass.newInstance() は "悪" なのでしょうか?
これは、コードサンプルに対するものです。
// Avoid Class.newInstance, for it is evil.
Constructor<? extends Runnable> ctor = runClass.getConstructor();
Runnable doRun = ctor.newInstance();
では、なぜEvilなのか?
どのように解決するのですか?
Java API のドキュメントに、その理由が書かれています ( http://java.sun.com/javase/6/docs/api/java/lang/Class.html#newInstance() ):
このメソッドは、チェックされた例外を含め、nullaryコンストラクタによって投げられたすべての例外を伝播することに注意してください。このメソッドを使用すると、コンパイラによって実行されるコンパイル時の例外チェックを効果的に回避することができます。このメソッドは
Constructor.newInstance
メソッドは、コンストラクタによってスローされる例外を (チェックされた)InvocationTargetException
.
言い換えれば、チェックされた例外システムを破ることができるのです。
関連
-
eclipse にリソースリーク:'in' が閉じない
-
Java基礎 - マッピングとQ/A
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] 特定のUnicode文字を含むコメントでのJavaコードの実行が許可されているのはなぜですか?
-
[解決済み] ISO 8601準拠のStringをjava.util.Dateに変換する。
-
[解決済み】なぜ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 実装 サイバーパンク風ボタン
おすすめ
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
CertificateException: XXXに一致するサブジェクトの代替DNS名が見つかりません 解決策
-
maven レポート エラー 解決不可能な親POM
-
eclipse にリソースリーク:'in' が閉じない
-
代入の左辺は変数でなければならない 解答
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
Java基礎 - マッピングとQ/A
-
[解決済み] Javaでクラスの名前を指定してインスタンス化する方法はありますか?