我的代码与此主题类似。 Class not serializable after methods are overridden
但我的目标是发送一个方法在另一台计算机上处理。 所以,我创建了这个存在于两端的类。当我要序列化类时,我重写方法就像上面的线程所示,我得到了非序列化的异常。 我在上面的帖子中看到我必须创建一个静态内部类。我怎样才能做到这一点?!一个匿名的内心阶级不能是静态的! 如果我明确了类名,我将在应用程序的反序列化结束时遇到问题。
客户代码:
public static void main(String[] args) {
try {
// TODO code application logic here
Socket client = new Socket("192.168.25.22", 62222);
System.out.println("Cliente conectado");
ObjectInputStream input = new ObjectInputStream(client.getInputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
try {
Task t =(Task) input.readUnshared();
System.out.println("Objeto recebido...");
t.myTask();
System.out.println("ok");
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
} catch (Exception ex) {
System.out.println("ERRO!");
ex.printStackTrace();
}
}
服务器代码:
public static void main(String args[]) {
try {
ServerSocket server = new ServerSocket(62222);
System.out.println("Listening on 62222...");
Socket client = server.accept();
System.out.println("New client connected with IP: " + client.getInetAddress().getHostAddress());
Task t = new Task(null){@Override public void myTask(){System.out.println("Olá");}};
//Task tz = new Tsk(null);
ObjectOutputStream output;
output = new ObjectOutputStream(client.getOutputStream());
output.writeUnshared(t);
output.close();
System.out.println("Task created");
System.out.println("Objeto enviado.");
} catch (Exception ex) {
ex.printStackTrace();
}
}
任务类代码:
public class Task implements Serializable{
List<Object> dataImput;
List<Object> dataOutput;
boolean finished;
private static final long serialVersionUID = 595012310163575L;
public Task(List<Object> dataImput){
this.finished=false;
this.dataImput= dataImput;
}
public void myTask(){
System.out.println("Not Implemented.");
}
public boolean isFinished() {
return finished;
}
}
答案 0 :(得分:0)
我的目标是发送一个方法在另一台计算机上处理。
你做不到。您可以发送对象的实例。不一样。
我在上面的帖子中看到我必须创建一个静态的内部类。
静态嵌套类。 “静态内在”是一个矛盾。
我该怎么做?! anonymus内部类不能是静态的!
正确。所以你不能使用匿名内部类。你的设计是错的。改变它。
如果我明确了类名,我将在应用程序的反序列化结束时遇到问题。
我不知道这意味着什么,或者你指的是什么问题。