我在类的一个方法中采用如下方法返回一个List的一部分
List<Mail> subList = new LinkedList(); if ((firstResult + maxResult) > mailList.size()) { subList = (List<Mail>) mailList.subList(firstResult, mailList
.size());
} else {
subList = (List<Mail>) mailList.subList(firstResult, firstResult
+ maxResult - 1);
}
return subList;
但是在返回时出现了如下错误:org.jboss.serial.exception.SerializationException: Could not create instance of java.util.SubList - java.util.SubList
at org.jboss.serial.classmetamodel.ClassMetaData.newInstance(ClassMetaData.java:342)
java.lang.InstantiationException: java.util.SubList
List<Mail> subList = new LinkedList(); if ((firstResult + maxResult) > mailList.size()) { subList = (List<Mail>) mailList.subList(firstResult, mailList
.size());
} else {
subList = (List<Mail>) mailList.subList(firstResult, firstResult
+ maxResult - 1);
}
return subList;
但是在返回时出现了如下错误:org.jboss.serial.exception.SerializationException: Could not create instance of java.util.SubList - java.util.SubList
at org.jboss.serial.classmetamodel.ClassMetaData.newInstance(ClassMetaData.java:342)
java.lang.InstantiationException: java.util.SubList
对象没有泛型啊,应该:
List <Mail> subList = new LinkedList<Mail>();
有没有完整的代码?
public QueryResult getNoMailList(String username, String password,
String mode, int firstResult, int maxResult) { Flag flag = null;
if (mode.equals("delete")) {
flag = Flag.DELETED;
}
System.out.println("noMailList mode:" + mode);
System.out.println("flag is " + (Flag.DELETED == flag));
System.out.println("---------------into getNOMailList()");
// mode标志邮件的链表
List<Mail> mailList = new LinkedList<Mail>();
// 创建Properties 对象
Properties props = System.getProperties();
session = Session.getDefaultInstance(props);
// 获取邮箱的pop3存储 Store store = null;
Folder folder = null;
try {
store = session.getStore(protocol);
System.out.println("----------before connect------------");
store.connect(host, username, password);
// 获取inbox文件
folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY); // 打开,打开后才能读取邮件信息 // 获取邮件消息
Message message[] = folder.getMessages();
System.out.println("message after---------");
// 处理邮件
// 等到指定标志的邮件或者等到全部邮件
for (int i = 0; i < message.length; i++) {
if (!(message[i].isSet(flag))) {
// 产生存储邮件信息的Mail类
Mail mail = new Mail();
System.out.println("new mail after---------");
// 将邮件信息存储到Mail类中
try {
mail.setMessage_id(message[i].getMessageNumber());
mail.setContent((message[i].getContent()).toString());
mail.setSubject(message[i].getSubject());
mail.setFromaddress(message[i].getFrom()[0].toString());
mail.setDate(message[i].getReceivedDate());
mail.setFielname(message[i].getFileName());
mail.setToaddress(message[i].getAllRecipients()[0]
.toString());
mail.setName(username); mail.setIsnew(message[i].isSet(Flag.SEEN));
mail.setDelsign(message[i].isSet(Flag.DELETED));
mail.setReply(message[i].isSet(Flag.ANSWERED));
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("exception ocrru");
e.printStackTrace();
}
mailList.add(mail);
}
} } catch (NoSuchProviderException e) { e.printStackTrace();
} catch (MessagingException e) { e.printStackTrace();
} finally { try {
if (folder != null) {
folder.close(false);
}
if (store != null) {
store.close();
}
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} folder = null;
store = null;
} // 将结果封装到QueryResult
System.out.println("new queryResult");
QueryResult qr = new QueryResult(); if ((firstResult + maxResult) > mailList.size()) { qr.setResultset(mailList.subList(firstResult, mailList.size()));
} else {
qr.setResultset(mailList.subList(firstResult, firstResult
+ maxResult - 1));
} qr.setRecordtotal((long) mailList.size());
System.out.println("over noMailList"); return qr;
}
QueryResult是自己写的一个序列化的类
have a try
List<Mail> subList = new LinkedList<Mail>(maillist.subList(xx, yy));
qr.setResultset();qr的内置List是什么类型?
Mail是否序列化了,Mail的属性是否也都序列化了(如果属性是某个自定义的类的话)