[解決済み] なぜJavaはThrowableの一般的なサブクラスを許さないのですか?
2022-04-23 04:53:18
質問
によると Java言語区分 第3版
<ブロッククオート
の直接または間接のサブクラスである場合、コンパイル時のエラーとなります。
Throwable
.
なぜこのような決定がなされたのか、理解したいものです。汎用的な例外の何がいけないのでしょうか?
(私の知る限り、ジェネリックは単なるコンパイル時の構文糖であり、翻訳されるのは
Object
の中で、とにかく
.class
ファイルであるため、ジェネリッククラスを効果的に宣言することは、あたかもそのクラス内のすべてが
Object
. 間違っていたらご指摘ください)
解決方法は?
マークが言ったように、型が再利用可能でないことが、以下の場合の問題点です。
try {
doSomeStuff();
} catch (SomeException<Integer> e) {
// ignore that
} catch (SomeException<String> e) {
crashAndBurn()
}
両方
SomeException<Integer>
と
SomeException<String>
が同じ型に消された場合、JVMが例外インスタンスを区別する方法がなく、したがって、どちらの
catch
ブロックが実行されるべきです。
関連
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] 特定のUnicode文字を含むコメントでのJavaコードの実行が許可されているのはなぜですか?
-
[解決済み] Javaで汎用配列を作成する方法は?
-
[解決済み] List<Dog> は List<Animal> のサブクラスですか?Java のジェネリックはなぜ暗黙のうちに多相性にならないのですか?
-
[解決済み] なぜJavaは静的メソッドのオーバーライドを認めないのですか?
-
[解決済み] なぜC#は汎用属性型を禁止しているのですか?
-
[解決済み] なぜJavaは符号なしintをサポートしないのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
JDKの設定時にjava.dllが見つからない、java SE Runtime Environmentが見つからない問題が発生しました。
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
Methodのinvokeメソッド実装のJavaリフレクション
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。