トップページ > プログラム > 2020年08月02日 > hOgQnHyE0

書き込み順位&時間帯一覧

5 位/158 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000003020000000005



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ fa55-xE3T)
デフォルトの名無しさん (ワッチョイ fa55-xE3T)
★★Java質問・相談スレッド183★★

書き込みレス一覧

★★Java質問・相談スレッド183★★
420 :デフォルトの名無しさん (ワッチョイ fa55-xE3T)[]:2020/08/02(日) 12:36:44.63 ID:hOgQnHyE0
Robert Segewick and Kevin Wayne著『Algorithms 4th Edition』では、ジェネリクスを使って、スタックを実装しています。

文字列のスタックの配列を作る時には、以下のように書かなければならないと書いてあります。

Stack<String>[] a = (Stack<String>[]) new Stack[N];

一方、Itemが型パラメータであるとき、Item型の配列を作るには、以下のように書かなければならないと書いてあります。

a = (Item[]) new Object[cap];

自然に、なぜ以下のように書かないのかという疑問が思い浮かびます。

Stack<String>[] a = (Stack<String>[]) new Object[N];

こう書かない理由が以下のように書かれていますが、これが何を言っているのか分かりません。

You might have expected to use Object instead of Stack. When using generics, Java checks for type safety at compile time,
but throws away that information at run time, so it is left with Stack<Object>[] or just Stack[], for short, which we must cast
to Stack<String>[].

何を言っているのでしょうか?
★★Java質問・相談スレッド183★★
421 :デフォルトの名無しさん (ワッチョイ fa55-xE3T)[]:2020/08/02(日) 12:39:17.55 ID:hOgQnHyE0
特に、

When using generics, Java checks for type safety at compile time,but throws away that information at run time,

の意味が分かりません。
★★Java質問・相談スレッド183★★
422 :デフォルトの名無しさん (ワッチョイ fa55-xE3T)[]:2020/08/02(日) 12:41:56.68 ID:hOgQnHyE0
ちなみに、

type safetyとは何か知りませんし、
at compile timeとat run timeというタイミングの違いによってどういう影響があるのかも分かりません。
★★Java質問・相談スレッド183★★
428 :デフォルトの名無しさん (ワッチョイ fa55-xE3T)[sage]:2020/08/02(日) 14:07:22.33 ID:hOgQnHyE0
>>426
型の安全性とは、=の左右の型が一致しているということですか?
実行時には、型が安全であったかどうかという情報を破棄するというのは、どうしてそうするのですか?
なぜ、コンパイル時に行う処理と実行時に行う処理に分けるのですか?
★★Java質問・相談スレッド183★★
430 :デフォルトの名無しさん (ワッチョイ fa55-xE3T)[sage]:2020/08/02(日) 14:53:18.78 ID:hOgQnHyE0
>>429
ありがとうございました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。