gpt4 book ai didi

java - Java 对象序列化中如何处理对另一个类的静态成员的调用?

转载 作者:行者123 更新时间:2023-12-01 08:00:20 25 4
gpt4 key购买 nike

public class Employee implements java.io.Serializable
{
public String name = "Tom";

public void mailCheck()
{
String address = SomeClass.ItsStaticField(name); //call to static

System.out.println("Mailing a check to " + name
+ " " + address);
}
}

public class SomeClass()
{
// Static Map of <Name, Address>
private static Map<String, String> NameAddressMap= new HashMap<String, String>();
string address;

Static ItsStaticField(name)
{
if (NameAddressMap.containsKey(name){
address = NameAddressMap.get(name);
}
else{
// address =...make a webservice call ... get address for name
NameAddressMap.put(name, address);
}
return address;
}
}

当上述对象被序列化时会发生什么?并在分布式环境中的另一个节点上反序列化?何时调用“SomeClass.ItsStaticField()”? “地址”字段的值是否在序列化之前计算,然后作为序列化过程的一部分捆绑为字节?

更新:对于冒昧添加更多信息表示歉意。添加了“SomeClass”的示例代码。我在分布式环境(特别是 Hadoop)中有上述代码。我知道这是一件坏事,因为将会有多个 Web 服务调用,并且预期的“缓存机制”并没有真正按预期工作。我想了解的是,何时以及多少次调用 Web 服务调用?在所有节点上创建了多少个静态映射“NameAddressMap”实例以及何时创建?非常感谢!

最佳答案

What happens when an object of the above is serialized?

名称已序列化

And deserialized on another node in a distributed environment?

名称已反序列化

When is 'SomeClass.ItsStaticField()' invoked?

当您调用mailCheck();

Is the 'address' field's value calculated before serialization and then bundled into bytes as part of the serialization process?

不,它不是序列化对象的成员。

关于java - Java 对象序列化中如何处理对另一个类的静态成员的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25797359/

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