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

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

部分代码:

public class PKladrBuilding extends PRQObject

public abstract class PRQObject extends PObject

public abstract class PObject implements Serializable

当前回答

在另一组中添加一个名为“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/。

其他回答

为了产生价值而使用

private static final long serialVersionUID = $randomLong$L;
$END$

并为randomLong模板变量提供如下值: .nextLong groovyScript(“新随机()().abs ())

https://pharsfalvi.wordpress.com/2015/03/18/adding-serialversionuid-in-idea/

在另一组中添加一个名为“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/。

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

private static final long serialVersionUID = ;

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

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

我不确定你是否有一个旧版本的IntelliJ IDEA,但如果我进入菜单文件→设置…→检查→序列化问题→没有启用serialVersionUID的可序列化类,您提供的类会给我警告。

如果我尝试第一堂课,我看到:

BTW:直到我在每个类的末尾添加{}来修复编译错误,它才向我显示警告。