Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RMI封送和序列化_Java_Object_Serialization_Marshalling_Rmi - Fatal编程技术网

Java RMI封送和序列化

Java RMI封送和序列化,java,object,serialization,marshalling,rmi,Java,Object,Serialization,Marshalling,Rmi,在java中,使用RMI封送从远程类返回的对象,您只需要在该对象上实现可序列化吗?我有一个类节点,里面有我想要返回的变量。我只是实现可序列化吗?如果是的话,那么接收对象的类呢?它的类也需要实现可序列化吗 例如: public class node implements Serializable{ //variables //variables public node(//arguments to constructor here){ } } 正在序列化的类需要实现Serializable。

在java中,使用RMI封送从远程类返回的对象,您只需要在该对象上实现可序列化吗?我有一个类节点,里面有我想要返回的变量。我只是实现可序列化吗?如果是的话,那么接收对象的类呢?它的类也需要实现可序列化吗

例如:

public class node implements Serializable{
//variables
//variables
public node(//arguments to constructor here){

}

}

正在序列化的类需要实现Serializable。发送类和接收类没有。不知道你为什么会这样想。

如果你有一个类,你想使用内置Java序列化来序列化它的实例,它不仅必须实现
可序列化
,它的所有实例变量也必须实现
可序列化
,或者是原语,或者被标记为
瞬态
(也就是说,您告诉JVM,它们不被序列化是可以的)


如果您的类由于某种原因不能符合这些约束,您可以通过实现
外部化
,自己实现自定义序列化行为-然后您负责写出对象的状态并在另一端读取它。

我不确定是否正确理解您的问题,但是如果serializable类有其他对象作为成员变量,那么最好使它们也可序列化,否则最好声明为瞬态以跳过。这是否回答了您的问题

若代码检查器程序很方便,那个么您就可以非常快速地找到此类问题的答案,而无需发布它


对于您的提示,只有您想要持久化或传输的对象需要实现可序列化,因此可以通过序列化/非序列化将对象重构为类结构

为此,我只需使类实现可序列化,或者还有更多吗?或者类中的每个变量都需要有特定的范围我不知道这个类需要实现
Serializable
。类上任何要序列化的字段也应该实现
Serializable
,或者是原语。“特定扩展名?”我不知道你的意思。如果我们调用一个远程方法并传递一个参数(例如一个字符串),该怎么办,它必须是可序列化的还是应该是可序列化的?是否只有对象必须是可序列化的?远程方法的参数和结果需要是可序列化的,就像任何非静态非瞬态成员一样,等等,直到闭包为止。