gpt4 book ai didi

java - 是否可以知道 serialVersionUID 是否自动生成?

转载 作者:行者123 更新时间:2023-11-30 09:46:22 24 4
gpt4 key购买 nike

我想知道是否有可能弄清楚某些 serialVersionUID 是否已自动生成(由 JVM)或者是否在类中明确定义了静态版本。

是否有可能这样做,如果可以的话,有什么线索吗?

最佳答案

使用反射。这是一个示例(不过我还没有检查 serialVersionUID 字段的确切约定):

public class SerialTest {
private static class A implements Serializable {
private static final long serialVersionUID = 1L;
}

private static class B implements Serializable {
}

public static void main(String[] args) throws Exception {
System.out.println("A : " + containSerialVersionUID(A.class));
System.out.println("B : " + containSerialVersionUID(B.class));
}

private static boolean containSerialVersionUID(Class<?> clazz) {
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
if (field.getName().equals("serialVersionUID")
&& field.getType() == Long.TYPE
&& Modifier.isPrivate(field.getModifiers())
&& Modifier.isStatic(field.getModifiers())
&& Modifier.isFinal(field.getModifiers())) {
return true;
}
}
return false;
}
}

关于java - 是否可以知道 serialVersionUID 是否自动生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7175253/

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