しつもんです。informationListというLinkedListを
作り、informationList.getLastで、最後の要素を
取り出したいのですが、getLastメソッドがオブジェクト型を
返すので、String element=(String)informationList.getLast();
とキャストしたのですが、ClassCastException?が出てしまう
のですが・・。キャストの仕方がわるいのでしょうか?
たぶん、リストに追加した変数の型に問題があるのではないかと。
add で追加した変数のクラス名をゆっくり見直してみてください。
コンパイルしてないので、コンパイルが通る保証はしませんが
一応下のコードでいけるはずです。
LinkedList informationList = new LinkedList();
CString data = データッス;
// data をリストの最後に追加
// String は Object クラスのサブクラスなので Object 型にキャ
ストして追加する必要はない
informationList.add(data);
// 最後に追加した String を取得
// この時は戻り値が Object なので String に変換する必要がある。
String result = (String)informationList.getLast();
System.out.println(result);
リストに追加した変数はたぶんString型です。String型の
変数を3つ持つコンストラクターの型にキャストして
addしてます。
list.add(new コンストラクタ名(a[0],a[1],a[2]));
のように。
どうでしょうか?
型変換をしないと@1902みたいに表示されてしまい、
ちゃんとした文字で出力されないのです。
どなたかご教授ください。お願いします。
>リストに追加した変数はたぶんString型です。String型の
>変数を3つ持つコンストラクターの型にキャストして
>addしてます。
>list.add(new コンストラクタ名(a[0],a[1],a[2]));
多分ではなく、はっきりさせて下さい。
というか、キャストって?
どー見ても、コンストラクタ名で指定したクラスのインスタンスを生成して
addしているようにしか見えないが。
Java言語の基礎やり直し?
すいません、返事が遅くなってしまいました(^^ゞ
> list.add(new コンストラクタ名(a[0],a[1],a[2]));
これだと、List に追加しているオブジェクトはString型ではなく
> String型の変数を3つ持つコンストラクターの型
になってしまいます。
もし、String を追加するのであれば、コンストラクタと同時に
toString メソッドを呼び出して、String を戻します。
list.add(new コンストラクタ名(a[0],a[1],a[2]).toString() );
~~~~~~~~~~
私には、このリストの中にString、String型の変数を3つ持つクラスの
どちらが入るのか正しいかわかりませんので、これ以上教えることは
できません。とりあえず、リストの中身の型を確認することが大事でしょうね。
System.out.println(
informationList.getLast().getClass()
);