Java 什么';这是为Jenkins工作流/管道创建可序列化Groovy类的语法
在使用Jenkins Workflow Groovy时,我在尝试为一个死气沉沉的简单类创建对象时遇到了序列化错误。通过可序列化测试需要什么样的语法糖?以下代码失败。添加@Serializable行失败,原因是“class java.io.Serializable不是@java.io.Serializable中的注释”Java 什么';这是为Jenkins工作流/管道创建可序列化Groovy类的语法,java,jenkins,groovy,serializable,Java,Jenkins,Groovy,Serializable,在使用Jenkins Workflow Groovy时,我在尝试为一个死气沉沉的简单类创建对象时遇到了序列化错误。通过可序列化测试需要什么样的语法糖?以下代码失败。添加@Serializable行失败,原因是“class java.io.Serializable不是@java.io.Serializable中的注释” 伊泽基尔回答了这个问题,这是值得赞扬的 class TestClass implements Serializable {} 值得一提的是,Groovy类不需要显式实现Seria
伊泽基尔回答了这个问题,这是值得赞扬的
class TestClass implements Serializable {}
值得一提的是,Groovy类不需要显式实现
Serializable
接口——任何Groovy类都实现以下两个接口:Serializable
和GroovyObject
但是,在Groovy CPS和Jenkins工作流CPS库中有一个类似于问题中提到的。它在groovycps:1.20和工作流cps:2.41中得到了修复
另一方面,使用Class.newInstance()
不是在Jenkins管道中初始化对象的推荐方法。默认情况下,此方法被列入黑名单,当您尝试批准它时,Jenkins警告您,批准此签名可能会引入安全漏洞
如果您查看
Class.newInstance()
方法实现,就会发现它疯狂地使用反射。在这种情况下,最好使用newtestclass()
而不是TestClass.newInstance()
实例化对象。Serializable是一个接口,而不是注释。您应该只实现它类TestClass implements Serializable
应该做到这一点。
class TestClass implements Serializable {}