我对如何以最干净、最 Groovy 的方式完成此操作感到困惑,但我根本不知道如何做到这一点
我只想强制在创建类时设置其所有构造函数参数:
class MyClass {
String paramOne
String paramTwo
MyClass(paramOne, paramTwo) throws Exception {
this.paramOne = paramOne
this.paramTwo = paramTwo
}
}
// I want to throw an error if all the constructor args arent set
// This doesnt throw an error
MyClass blah = new MyClass()
评论中的问题:
有没有办法可以使用命名参数并防止使用默认构造函数?
@groovy.transform.ToString
class A{
String p1
int p2
A(Map params=null){
assert params:"at least one parameter is required for ${this.getClass()}"
A.metaClass.setProperties(this,params)
//validate params...
assert p1:'`p1` couldn\'t be empty'
}
}
A a=new A(p1:111,p2:222)
println a
new A() // <<<--- this throws exception
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句