質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

Q&A

解決済

1回答

4605閲覧

Javaの共変戻り値の問題で分からないところがあります

riz_

総合スコア5

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

0グッド

2クリップ

投稿2020/04/28 17:21

Javaの問題集を勉強中に理解できない部分がありました。
以下の問題の選択肢Eがなぜ不正解なのか教えて欲しいです。

【問題】
次のAクラスを継承したサブクラスに定義できるメソッドとして、正しいものを選びなさい。(2つ選択)
(正解はBとF)

【コード】
import java.util.*;

public class A{
public List<Number> test(Set<CharSequence> s){
return null;
}
}

【選択肢】
A. public ArrayList<Integer> test(Set<String> s){...}
B. public List<Integer> test(TreeSet<String> s){...}
C. public List<Integer> test(Set<String> s){...}
D. public List<Object> test(Set<CharSequence> s){...}
E. public List<Integer> test(Set<CharSequence> s){...}
F. public ArrayList<Number> test(Set<CharSequence> s){...}

【考えたこと】
解説文より、Bはオーバーロードのため正解、Fは共変戻り値として解釈され正解、ということは分かりました。
しかし、Fが共変戻り値として解釈されるならEも共変戻り値と解釈はされないのでしょうか?
なぜFがよくてEがダメなのか教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/28 17:59

問題集なら開設がちゃんと書かれてると思うが
Ninja1

2023/12/23 12:57

上のユーザー悪意満々で口が悪い上に頭も悪そう。問題文の解説があいまいだからここで質問しているのわからないのか(笑)?しかもここは探求心と向上心がある人達が集まって助け合うところだから、お前みたいな上目線のやつが、人を助けることなく代わりにマウントを取るような発言するのやめてくれない?
guest

回答1

0

ベストアンサー

Fが共変戻り値として解釈されるならEも共変戻り値と解釈はされないのでしょうか?

特に指定しない場合、ジェネリクスのパラメーターは非変です。共変性や反変性を持たせたい場合、ワイルドカードを使ってそれを明示する必要があります。

投稿2020/04/28 22:37

maisumakun

総合スコア145201

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問