[解決済み] オーバーライドされたメソッドは、戻り値の型を変えることができますか?
2022-04-24 06:09:36
質問
オーバーライドされたメソッドに 異なる戻り値のタイプ ?
解決方法は?
Javaがサポートするもの <上 * オーバーライドされたメソッドに対して共変量戻り値型を使用します。つまり、オーバーライドされたメソッドには より という特定の戻り値の型があります。つまり、新しい戻り値の型がオーバーライドするメソッドの戻り値の型に割り当て可能である限り、それは許可されます。
例えば
class ShapeBuilder {
...
public Shape build() {
....
}
class CircleBuilder extends ShapeBuilder{
...
@Override
public Circle build() {
....
}
で指定されています。 Java言語仕様書8.4.5項 :
戻り値の型が参照型の場合、互いにオーバーライドするメソッド間で戻り値の型が異なることがあります。return-type-substitutabilityの概念は、covariant return、つまり、戻り値の型をサブタイプに特化することをサポートします。
戻り値型R1を持つメソッド宣言d1は、以下の条件が成立する場合に限り、戻り値型R2を持つ別のメソッドd2に対して戻り値型代入可能である。
R1 が void ならば R2 も void である。
R1がプリミティブ型の場合、R2はR1と同一である。
もしR1が参照型であるなら
R1 は R2 のサブタイプであるか、未チェックの変換 (§5.1.9) により R1 を R2 のサブタイプに変換できるか、または
R1 = |R2|
("|R2|"で定義されるR2の消去を指します。 JLS §4.6 .)
* Java 5 以前の Java には 不変量 つまり、オーバーライドするメソッドの戻り値の型は、オーバーライドするメソッドと正確に一致する必要がありました。
関連
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] Eclipseにプロジェクトをインポートした後に「Must Override a Superclass Method」エラーが発生する。
-
[解決済み] 静的メソッドを使用する場合
-
[解決済み] C#でメソッドをパラメータとして渡す
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
JQuery DataTable 详解
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
Javaエラーメッセージがenclosingクラスでない
-
IDEA パッケージステートメントの欠落
-
テストが見つかりませんでした
-
[解決済み] メソッドの戻り値の型を汎用的にするにはどうすればよいですか?