- - PR -
Vector型配列の宣言方法について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-07-04 10:03
Generics以前に、型や型変換のなんたるか自体を、把握できていないようですが…。
Genericsはあくまで補助的な機能なので、基本ができてないと使えないですよ。 | ||||||||
|
投稿日時: 2007-07-04 10:11
ここで出ている互換性がないエラーは
ClassCastExceptionのことです。 これでご理解できない場合は基本が出来ていないと思わざるを得ません。 | ||||||||
|
投稿日時: 2007-07-04 10:29
をを、手厳しい。<自分のことは棚に上げて
<追記>これは余計か。今さらだけど。orz</追記> Genericsって、明示的に要素の型を拘束できるので、 むしろ初心者にこそ、きっちり仕込んでおくべき、と 考える私は、少数派なのでしょうか。 基本ってのは、ずらずら並べてどうなるってものでもないですが、 エラーメッセージを読んで、それを勉強のネタにする、ってのは それこそ最低限ですね。 [ メッセージ編集済み 編集者: Edosson 編集日時 2007-07-04 10:38 ] | ||||||||
|
投稿日時: 2007-07-04 14:13
VectorからelementAtしたらジェネリクスの型が帰るでしょう? 今の場合はString型。 sはString[]型だから型が違う。 投稿する前に落ち着いてコンパイルエラーのメッセージをよく読みましょう。 なお、VectorはJDK1.0のころの化石のようなクラスです。 elementAtメソッドもそのころの名残です。あまり使わないほうがいい。
といったように、インターフェースListで定義し、 newした具象型を意識しない作りにすることが推奨されます。 Vectorに定義されているelementAt()を使うのではなく、 Listインターフェースに定義されているget()を使うべき。 こうしてあると具象型がArrayListだろうがVectorだろうがLinkedListだろうが、 ソースは互換が保たれる。 あえてVector型である必要がないならより上位の型で宣言しましょう。 | ||||||||
|
投稿日時: 2007-07-04 16:21
拝承
nagiseさん 丁寧なご指摘と解答有難うございます。 Vectorはもう古いのですね。。。 今4年ぶりにJavaをやることになり、再度勉強を始めているところです。 周りにJavaを知っている人が一人もいないので、つい投稿に頼ってしまいました。 なのでnagiseさんのような指摘はとても助かります。 有難うごさいます。 |