gpt4 book ai didi

java - 序列化和 RMI

转载 作者:行者123 更新时间:2023-12-02 08:18:51 24 4
gpt4 key购买 nike

我有以下问题:

class POJO implements Serializable{
int[] a = new int[2];
int b;
}

服务器:

printThere(ArrayList<POJO> list) throws RemoteException{
for(POJO obj:list)
System.out.println(obj.a[0]+" "+obj.a[1]+" "+obj.b);\\<-----THERE LINE
}

客户:

main(){
POJO o1 = new POJO();
o1.a[0] =1;
o1.a[1] =2;
o1.b= 11;
POJO o2 = new POJO();
o2.a[0] =10;
o2.a[1] =20;
o2.b= 111;
ArrayList<POJO> list = new ArrayList<POJO>();
list.add(o1);
list.add(o2);
for(POJO obj:list)
System.out.println(obj.a[0]+" "+obj.a[1]+" "+obj.b);\\<-----HERE LINE
server = proxy.lookup("server");
server.printThere(list);
}

这里的行打印如下:

1 2 11  
10 20 111

打印的行如下:

1 2 111  
10 20 111

为什么我失去了 b 的值在一个物体中?我尝试使用 Vector<POJO>和一个 POJO[]在远程方法中但得到了相同的结果。

最佳答案

我没有看到问题。也就是说,我认为您很快就能弄清真相。这是我的建议:

逐渐从你的程序中省略一些片段。每个步骤之后运行代码并查看问题是否仍然存在。每个这样的“实验”都会为您提供有关问题原因的有值(value)的详细信息。最终您希望能够检测代码中的哪个元素导致了问题。以下是在此过程中需要采取的一些步骤:

  • 如果删除 o2 是否会出现此问题从你的代码中?
  • 如果您创建o2,是否会出现此问题但不要将其添加到 list
  • 如果删除 a 是否会出现此问题来自 POJO 的字段类(class)?
  • 如果更改 a 是否会出现此问题到单个元素数组( a = new int[1] )?
  • 如果更改 a 是否会出现此问题从数组到(比如说)整数?
  • 如果更改 b 是否会出现此问题的类型从 int 转换为其他原始类型?
  • 如果更改 b 是否会出现此问题的类型从 int 转换为其他非原始类型(例如: Stringjava.util.Date )?
  • 如果更改 o1 的顺序,是否会出现此问题?和o2在列表内(即先添加(o2)然后添加(o1))?
  • 如果您将 printThere() 的签名更改为(例如)POJO,是否会出现问题?参数(而不是单个 ArrayList)?
  • 如果更改打印中字段的顺序(例如,先打印 b,然后打印 a[1],然后打印 a[0]),是否会出现问题?
  • ...

通常,在应用诸如此类的几个“转换”步骤之后,我会收集足够的信息来确定根本原因。最重要的是,我尝试缩小范围。如果我发现即使 o2 也会出现问题被省略,然后我将其保留,继续使用更容易理解的较小程序。

关于java - 序列化和 RMI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com