No.2ベストアンサー
- 回答日時:
> ・不要と思って省略して質問したのですが
略したら意味をなさなくなるのに、どうして不要と思ってしまったのでしょうか。
> ・この書き方だったらできるでしょうか?(クラス宣言時の< >と、インターフェイスの< >は意味が違う?)
> ・public class ★★ extends ○○<Object, Integer, List<■■>>
ジェネリクスクラス○○<Object, Integer, List<■■>>を継承(extends)して★★クラスを宣言することは可能です。
しかし、「クラス宣言時の< >と、インターフェイスの< >は意味が違う?」の疑問文は、何と何を比較しているのかが分かりません。インターフェイスという話はどこから出てきたのやら。
public class ★★<T> { (定義は省略) }
public interface ☆☆<S> { (定義は省略) }
このクラス宣言とインターフェイス宣言で、<T>と<S>の間には特に意味の違いはないと思います。ここでTとSはどちらも型パラメータ。
> >型を「ジェネリクスで指定」とはどのような状況のことを指していますか?
> ・インターフェイスの< >などで指定している型の意味で質問しました
これを読んでも、元の質問である「「ジェネリクスで指定できる型」と「普通に指定できる型」に違いはありますか?」の意味が分かりません。
それぞれについて「こういう構文のここに書く型指定」という具体例を挙げることはできませんか?
> ・「リスト」「配列」の違いは、生成時にサイズを決める必要があるか、でしょうか?
使い勝手という点では、それが一番大きな違いでしょうね。言語仕様および実装の観点からは他にもいろいろ違いますし、この文脈でなぜそれを聞くのかも謎ですが。
> ・List<MyClass>の意味は、リストの中身が全て「MyClass」のインスタンスという意味でしょうか? もしくは「MyClass」のメンバ?
List<MyClass>は、その要素が全てMyClass型である(MyClassのインスタンス、MyClassのサブクラスのインスタンス、null)ことが保証されているListです。
MyClassのメンバという発想がどこから出てくるのかが分かりません。
> ・List<List<String>[]>の意味は、リストの中身が必ず文字列型の配列、ということでしょうか?
一段階足りていません。List<String>をXと呼ぶことにすると、List<List<String>[]>は、その要素が全て「Xの配列」であるListです。要素が全て「文字列型の配列」でであるListではありません。
回答ありがとうございました
・今回一番知りたかった内容は、下記でした
>List<MyClass>は、その要素が全てMyClass型である(MyClassのインスタンス、MyClassのサブクラスのインスタンス、null)ことが保証されているList
・質問内容とズレていますが、最初の回答を読んだとき初めて、自分が知りたいことに気が付きました
・インターフェイスの件は、こちらの勘違いです
・また、ジェネリクスの件は、再度勉強して、それでも分からなければ改めて質問したいと思います
・疑問に丁寧に回答いただいたので、大変参考になりましたー
No.1
- 回答日時:
> class ★★<Object, Integer, List<■■>>
クラスの宣言ではこのような書き方はできないと思います。クラス宣言時に< >の中に書けるのは型パラメータであって、具体的な型ではありません。
> ・この時、List<■■>のデータ型を何と呼ぶのでしょうか?
> (配列型? クラス型? ユーザー定義型? それ以外?)
上のような書き方はありませんが、その点をおいておくとList<■■>はクラス型、もっと言えばジェネリクスクラス型でしょう。
Javaにおける配列というのは[ ]を使ってその要素にアクセスできるものなのでList<■■>は配列ではあり得ません。また、ユーザー定義型かどうかとジェネリクスクラスは直交する概念です。
> ・「ジェネリクスで指定できる型」と「普通に指定できる型」に違いはありますか?
> (ジェネリクスでしか指定できない、みたいな型はある?)
型を「ジェネリクスで指定」とはどのような状況のことを指していますか?
> ・「List<データ型>」の「データ型」として指定できる内容には、どんなものがあるのでしょうか?
> (ユーザー定義クラス?)
参照型であれば何でも。ユーザー定義かどうかは問いません。
Listがjava.util.Listのことだとして、List<Object>もList<MyClass>もList<List<String>[]>も可能です。
この回答への補足
回答ありがとうございました。
>クラスの宣言ではこのような書き方はできないと思います
・不要と思って省略して質問したのですが、実際には下記のようになっていました
・この書き方だったらできるでしょうか?(クラス宣言時の< >と、インターフェイスの< >は意味が違う?)
・public class ★★ extends ○○<Object, Integer, List<■■>>
>クラス宣言時に< >の中に書けるのは型パラメータであって、具体的な型ではありません
・型パラメータ=型変数(Tなど)でしょうか?
>型を「ジェネリクスで指定」とはどのような状況のことを指していますか?
・インターフェイスの< >などで指定している型の意味で質問しました
>Listがjava.util.Listのことだとして、List<Object>もList<MyClass>もList<List<String>[]>も可能です
・「リスト」「配列」の違いは、生成時にサイズを決める必要があるか、でしょうか?
・List<List<String>[]>の意味は、リストの中身が必ず文字列型の配列、ということでしょうか?
・List<MyClass>の意味は、リストの中身が全て「MyClass」のインスタンスという意味でしょうか? もしくは「MyClass」のメンバ?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どこからも呼ばれていない無意...
-
A・B・Cクラスとは?
-
java eclipse 型に解決できません
-
配列の重複する値とその個数を...
-
同一パッケージにあるクラスが...
-
dllと同じプロジェクトにする方法
-
命名規約は連番でいいのか?
-
main()を持つクラスが2つ以上...
-
修学旅行での演芸大会の出し物...
-
UMLのクラス図はmain()も含むん...
-
コンボボックスのマウスホイー...
-
ATLとMFCの違いは何でしょうか?
-
VBAもしくはVB6:クラスの中で...
-
ネスカフェ エクセラ と UCCク...
-
tomcat上でのpropertiesファイ...
-
定数はどこでまとめますか?
-
1 つのヘッダファイルに複数の...
-
ヤマハのジュニア科に通っています
-
JAVAで他ライブラリのクラスを...
-
eclipse でクラスに色
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
どこからも呼ばれていない無意...
-
main()を持つクラスが2つ以上...
-
UMLのクラス図はmain()も含むん...
-
A・B・Cクラスとは?
-
同じクラスにならない確率を教...
-
eclipse でクラスに色
-
IPアドレスの3バイト目の呼び方
-
修学旅行での演芸大会の出し物...
-
「天声人語」をインターネット...
-
共通で使う関数を集めたクラス...
-
3年間同じクラスになる確率
-
dllと同じプロジェクトにする方法
-
同一パッケージにあるクラスが...
-
重複エラーを解決するには
-
ネスカフェ エクセラ と UCCク...
-
IPアドレスのクラスAを取得して...
-
1 つのヘッダファイルに複数の...
-
複数のクラスで共通した関数を...
おすすめ情報