Java:序列化初学者问题:-(

标签 java arrays serialization

我想通过序列化保存和存储简单的邮件对象,但总是出现错误,而且找不到它在哪里。

package sotring;
import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;

import com.sun.org.apache.bcel.internal.generic.INEG;

public class storeing {

    public static void storeMail(Message[] mail){
        try {
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("mail.ser"));
            out.writeObject(mail);
            out.flush();
            out.close();

        } catch (IOException e) {
        }   
    }

        public static Message[] getStoredMails(){

     try
     {

        ObjectInputStream in = new ObjectInputStream(new FileInputStream("mail.ser"));
        Message[] array = (Message[]) in.readObject() ;
        for (int i=0; i< array.length;i++)
            System.out.println("EMail von:"+ array[i].getSender() + " an " + array[i].getReceiver()+ " Emailbetreff: "+ array[i].getBetreff() + " Inhalt: " + array[i].getContent());

        System.out.println("Size: "+array.length);  //return array;
        in.close();
        return array;    
     }
     catch(IOException ex)
     {
        ex.printStackTrace();
        return null;
     }
     catch(ClassNotFoundException ex)
     {
        ex.printStackTrace();
        return null;
     }  
}

    public static void main(String[] args) {
        User user1 = new User("User1", "geheim");
        User user2 = new User("User2", "geheim");

        Message email1 = new Message(user1.getName(), user2.getName(), "Test", "Fooobaaaar");
        Message email2 = new Message(user1.getName(), user2.getName(), "Test2", "Woohoo");
        Message email3 = new Message(user1.getName(), user2.getName(), "Test3", "Okay =) ");
        Message [] mails = {email1, email2, email3};
        storeMail(mails);
        Message[] restored = getStoredMails();;         
    }
}

这是用户和消息类别

public class Message implements Serializable{

    static final long serialVersionUID = -1L;

    private String receiver;  //Empfänger
    private String sender;  //Absender
    private String Betreff;
    private String content;
    private String timestamp;

    private String getDateTime() {
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date date = new Date();
        return dateFormat.format(date);
    }

    Message (String receiver, String sender, String Betreff, String content) {
        this.Betreff= Betreff;
        this.receiver = receiver;
        this.sender = sender;
        this.content = content;
        this.timestamp = getDateTime(); 
    }

    Message() {  // Just for loaded msg 
    }

    public String getReceiver() {
        return receiver;
    }

    public void setReceiver(String receiver) {
        this.receiver = receiver;
    }

    public String getSender() {
        return sender;
    }

    public void setSender(String sender) {
        this.sender = sender;
    }

    public String getBetreff() {
        return Betreff;
    }

    public void setBetreff(String betreff) {
        Betreff = betreff;
    }

    public String getContent() {
        return content;
    }
    public String getTime() {
        return timestamp;
    }
    public void setContent(String content) {
        this.content = content;
    }

}

public class User implements Serializable{

    static final long serialVersionUID = -1L;
    private String username;  //unique Username
    private String ipadress;  //changes everytime
    private String password;  //Password
    private int unreadMsg;    //Unread Messages
    private static int usercount;
    private boolean online;

    public String getName(){
        return username;
    }
    public boolean Status() {
        return online;
    }

    public void setOnline() {
        this.online = true;
    }
    public void setOffline() {
        this.online = false;
    }

    User(String username,String password){
        if (true){
            this.username = username;
            this.password = password;
            usercount++;

        } else System.out.print("Username not availiable"); 
    }

    public void changePassword(String newpassword){
        password = newpassword;
    }

    public void setIP(String newip){
        ipadress = newip;
    }

    public String getIP(){
        if (ipadress.length() >= 7){
            return ipadress;
        } else return "ip address not set.";
    }



    public int getUnreadMsg() {
        return unreadMsg;
    }   
}

这是一个异常(exception):

线程“main”java.lang.Error中的异常: Unresolved 编译问题: 该方法必须返回 Message[] 类型的结果 在 sostring.storeing.getStoredMails(storeing.java:22) 在 sostring.storeing.main(storeing.java:57)

感谢您的帮助!!!!!!!!!!

最佳答案

catch 子句需要返回一些东西。

public static Message[] getStoredMails(){

     try
     {

            ObjectInputStream in = new ObjectInputStream(new FileInputStream("mail.ser"));
            Message[] array = (Message[]) in.readObject() ;
            System.out.println("Size: "+array.length);      //return array;
            in.close();
            return array;    
     }
     catch(IOException ex)
     {
            ex.printStackTrace();
     }
     catch(ClassNotFoundException ex)
     {
            ex.printStackTrace();
     }    
     return null; //fix  
}

关于Java:序列化初学者问题:-(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/176051/

相关文章:

java - 在 eclipse 插件中使用 ANTLR v4 运行时

java - 使用 Gradle AspectJ 将生产方面编织到测试类中

ruby - 如何在 mongoDB 中展平双数组?

c++ - 当对字段使用不同的值时,Protobuf 序列化长度不同

java - Android - 仅发送所需的 json

json - 使用 Newtonsoft JSON 反序列化的 System.TypeLoadException

java - 尝试重新安装或更新您的 Android SDK Manager

c# - 从数组中删除一项并将其他项向后移动

php - 如何访问WordPress插件变量/MySQL数据?

java - setRGB() 似乎没有改变颜色