网络中如果你要通过Socket传送数据,并且数据使用Object组织的,那么,这个对象就必须是Serializable才行。
实际编程中,Serializable接口没有具体的方法需要实现,假如你要将A 类的对象a通过Socket传送,则A类必须声明为Serializable的。
如下的类的对象就可通过Socket传送public class InvocationEvent implements java.io.Serializable{
    String componentName;
    String methodName;
    Object[] args;    public InvocationEvent() {
    }
    public InvocationEvent(String componentName, String methodName, Object[] args) {
        this.componentName = componentName;
        this.methodName = methodName;
        this.args = args;
    }    public String getComponentName() {
        return componentName;
    }
    public void setComponentName(String componentName) {
        this.componentName = componentName;
    }
    public String getMethodName() {
        return methodName;
    }
    public void setMethodName(String methodName) {
        this.methodName = methodName;
    }
    public Object[] getArguments() {
        return args;
    }
    public void setArguments(Object[] args) {
        this.args = args;
    }
}

解决方案 »

  1.   

    有个问题 JAVA在网上传递对象 有大小限制吗?
      

  2.   

    什么叫"通过Socket传送数据"??能不通过Socket传送数据的吗?能不能举个例子说明一下!谢了!
      

  3.   

    实现Serializable接口其中一个原因是为了重构对象方便。比如你有一个200个成员的对象要传输到远方去,远方接受后要做200次设置...如果实现了Serializable接口,那么只要以流的形式传过去,接受后直接从流中就可以造型出来了,是不是很方便?
      

  4.   

    还有一个特性就是当A类包含了B类,而两者都是Serializable的,那么在写A进流里时会将自动将B包含进去,这对复杂的对象很有用.
    具体应用如保存文件,网络,不过在做保存文件之类的应用之前请三思...因为版本之间的兼容问题非常头疼,如果有谁解决了这个问题,望告之.
      

  5.   

    RMI里面远程对象以及远程对象的方法的参数和返回值类型都必须是Serializable接口的
      

  6.   

    只有实现Serializable借口的对象才能写入ObjectOutputStream,用这个stream可以直接传输Java对象,不管是通过socket在网络上传还是写入本地文件系统。这个接口没有方法,其存在的意义就是识别能通过ObjectOutputStream传送的对象。至于为什么这样在RMI的FAQ中有解释,主要是防止程序员无意或胡乱的用ObjectOutputStream写对象。