如何在IntelliJ IDEA中生成这个值?

我去设置->错误-> Serialization问题-> Serializable类没有' serialVersionUID ',但它仍然没有显示警告。我的类PKladrBuilding父类实现了接口Serializable。

部分代码:

public class PKladrBuilding extends PRQObject

public abstract class PRQObject extends PObject

public abstract class PObject implements Serializable

当前回答

不需要任何插件:你只需要在IntelliJ中启用高亮:

IntelliJ首选项->编辑器->检查-> Java ->序列化问题->序列化类没有'serialVersionUID' -设置标志,并单击'确定'。

现在,如果您的类实现了Serializable,您将看到高亮显示,并在类名上使用alt+Enter将建议生成私有静态最终长serialVersionUID。

PS:从这里拍摄

其他回答

不需要任何插件:你只需要在IntelliJ中启用高亮:

IntelliJ首选项->编辑器->检查-> Java ->序列化问题->序列化类没有'serialVersionUID' -设置标志,并单击'确定'。

现在,如果您的类实现了Serializable,您将看到高亮显示,并在类名上使用alt+Enter将建议生成私有静态最终长serialVersionUID。

PS:从这里拍摄

在macOS上,你可以找到serialVersionUID适用的地方。

最简单的现代方法:Alt+Enter on

private static final long serialVersionUID = ;

IntelliJ将在=后面的空格下划线。把你的光标放在上面,然后按alt+Enter (Mac上的选项+Enter)。你会看到一个弹窗,上面写着“随机更改serialVersionUID初始化器”。只要按回车键,它就会用一个随机的long填充那个空间。

另一种生成serialVersionUID的方法是使用>Analyze >Run Inspection by Name从上下文菜单(或键盘快捷键,默认是ctrl+alt+shift+i),然后键入“Serializable class without 'serialVersionUID'”(或简单地键入“serialVersionUID”,type ahead函数将为您找到它。

然后你会得到一个上下文菜单,你可以在其中选择在哪里运行检查(例如,所有来自特定模块,整个项目,一个文件,…)

使用这种方法,您甚至不需要设置一般检查规则。

在另一组中添加一个名为“ser”的活动模板,设置为“applied in Java: declaration”,并取消勾选“Shorten FQ names”。给它一个模板文本:

$serial$

现在编辑变量并设置serial为:

groovyScript("(System.env.JDK_HOME+'/bin/serialver -classpath '+com.intellij.openapi.fileEditor.FileDocumentManager.instance.getFile(_editor.document).path.replaceAll('/java/.*','').replaceAll('/src/','/build/classes/')+' '+_1).execute().text.replaceAll('.*: *','')",qualifiedClassName())

它采用标准的Gradle项目布局。为Maven更改/build/到/target/。