Java RMI序列化/封送

Java RMI序列化/封送,java,serialization,rmi,Java,Serialization,Rmi,我需要一些关于java序列化的说明。如果我正在序列化一个对象,并且希望通过RMI返回该对象,那么我是否只需要在对象的自定义类上实现serializable?我见过objectoutputstream和objectinputstream,但我不知道是否需要使用它们,因为我不太了解它们的用法。我的第二个问题是如何使arraylist可序列化?我的第三个问题可能与我的第一个问题有关,但我如何在返回对象之前封送它?序列化对象是否会在过程中封送它 让我们把有问题的班级称为句子: public class

我需要一些关于java序列化的说明。如果我正在序列化一个对象,并且希望通过RMI返回该对象,那么我是否只需要在对象的自定义类上实现serializable?我见过objectoutputstream和objectinputstream,但我不知道是否需要使用它们,因为我不太了解它们的用法。我的第二个问题是如何使arraylist可序列化?我的第三个问题可能与我的第一个问题有关,但我如何在返回对象之前封送它?序列化对象是否会在过程中封送它

让我们把有问题的班级称为句子:

public class Sentence implements Serializable  {

}

然后我将创建该类的一个实例,并从其他类返回该对象

Serializable
就是所谓的标记接口;它只是告诉Java,您的类具有某种能力,而不需要您实现任何特定的方法。在类中实现它告诉JVM可以(有意义地)获取Java对象的字段并将其转换为打包形式,以供以后或在另一台计算机上使用


如果类中的所有字段都是可序列化的,那么就只需要这样做了。如果您的字段不可
序列化
,例如保存网络连接或本机资源的字段,则需要将它们标记为
暂时的
(被序列化忽略)当您的类通过重写
readObject
和/或
writeObject
Serializable
进行反序列化时,请注意将它们设置为备份,这就是所谓的标记接口;它只是告诉Java,您的类具有某种能力,而不需要您实现任何特定的方法。在类中实现它告诉JVM可以(有意义地)获取Java对象的字段并将其转换为打包形式,以供以后或在另一台计算机上使用


如果类中的所有字段都是可序列化的,那么就只需要这样做了。如果您的字段不可
序列化
,例如保存网络连接或本机资源的字段,则需要将它们标记为
暂时的
(被序列化忽略)当您的类通过重写
readObject
和/或
writeObject
Serializable
进行反序列化时,请注意将它们设置为备份,这就是所谓的标记接口;它只是告诉Java,您的类具有某种能力,而不需要您实现任何特定的方法。在类中实现它告诉JVM可以(有意义地)获取Java对象的字段并将其转换为打包形式,以供以后或在另一台计算机上使用


如果类中的所有字段都是可序列化的,那么就只需要这样做了。如果您的字段不可
序列化
,例如保存网络连接或本机资源的字段,则需要将它们标记为
暂时的
(被序列化忽略)当您的类通过重写
readObject
和/或
writeObject
Serializable
进行反序列化时,请注意将它们设置为备份,这就是所谓的标记接口;它只是告诉Java,您的类具有某种能力,而不需要您实现任何特定的方法。在类中实现它告诉JVM可以(有意义地)获取Java对象的字段并将其转换为打包形式,以供以后或在另一台计算机上使用

如果类中的所有字段都是可序列化的,那么就只需要这样做了。如果您的字段不可
序列化
,例如保存网络连接或本机资源的字段,则需要将它们标记为
瞬态
(被序列化忽略),并在通过重写
readObject
和/或
writeObject
反序列化类时注意将它们设置为备份

  • 是:实现Serializable会使对象可序列化,除非它引用的对象不可序列化。RMI在内部使用对象流来发送和接收对象。如果使用RMI,则不需要使用它们。如果要使用套接字发送对象,或将其保存到文件,则可以使用套接字

  • ArrayList已可序列化。看看它的javadoc。你什么都不用做

  • 您只需从RMI方法返回对象,RMI将为您序列化它。序列化和编组是两个基本上意思相同的词。同样,如果RMI方法接受参数,RMI将序列化作为参数传递的对象,并将其发送到RMI服务器,后者将对其进行反序列化,然后调用实际的方法。这一切都由RMI为您完成

  • 是:实现Serializable会使对象可序列化,除非它引用的对象不可序列化。RMI在内部使用对象流来发送和接收对象。如果使用RMI,则不需要使用它们。如果要使用套接字发送对象,或将其保存到文件,则可以使用套接字

  • ArrayList已可序列化。看看它的javadoc。你什么都不用做

  • 您只需从RMI方法返回对象,RMI将为您序列化它。序列化和编组是两个基本上意思相同的词。同样,如果RMI方法接受参数,RMI将序列化作为参数传递的对象,并将其发送到RMI服务器,后者将对其进行反序列化,然后调用实际的方法。这一切都由RMI为您完成

  • 是:实现Serializable会使对象可序列化,除非它引用的对象不可序列化。RMI在内部使用对象流来发送和接收对象。如果使用RMI,则不需要使用它们。如果要使用套接字发送对象,或将其保存到文件,则可以使用套接字