0

以下は、という名前のクラス内の Java の私のコードですDnsTime

List<DnsTime> list = new ArrayList<DnsTime>();  
String selUrl = "http://www.abc.com";   
String query = "select dns_time,update_time from dns_time where url=?";   
list = session.createSQLQuery(query).setString(0,selUrl).list();  
/* getting dns_time and update_time from each record(row) using 
   for inside another for loop  */

for (int i = 0; i < list.size(); i++) {
    List<DnsTime> innerlist = (List<DnsTime>) list.get(i);
    for (int j = 0; j < innerlist.size(); j++) {
         System.out.println(innerlist.get(j));
    }
}

これは、クエリの実行後にリストからリスト要素を取得するための Java のプログラム コードです。休止状態を使用しています。クエリは機能していますが、問題はリスト要素の取得にあります。例外が発生しています。

java.lang.ClassCastException: java.lang.object を java.util.List にキャストできません

各リスト行からリスト要素を個別に取得する方法は?

4

2 に答える 2

4

初期リストの宣言は良くありません。そのはず:

List<List<DnsTime>> list = new ArrayList<List<DnsTime>>();

補足: foreach ループを使用する必要があります。

for (List<DnsTime> subList: list)
    for (DnsTime time: subList)
        System.out.println(time);

編集:ただし、これは本当の問題ではないと思います。数行後、次のようになります。

list = session.createSQLQuery(query).setString(0,selUrl).list();

さて、それは何返しますか?

于 2013-06-10T07:43:23.133 に答える
1

リストのオブジェクト/エントリをリストにキャストしようとしています。リストのリストがある場合にのみこれを行うことができます。問題は次の行です。

List<DnsTime> innerlist=(List<DnsTime>)list.get(i);

list.get(i) リストが宣言されているDnsTime広告のリストではなく、DnsTimeのオブジェクトを提供しますList<DnsTime> list=new ArrayList<DnsTime>();

データベースから何を取得しているかに応じて、リストを適切に宣言するか、取得したアイテム キャストを変更する必要があります。

于 2013-06-10T07:43:52.413 に答える