如何使用命名参数并防止使用默认构造函数?

红888

我对如何以最干净、最 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何强制对某些构造函数/函数的调用使用命名参数?

Swift构造函数为什么使用命名参数调用?

JavaScript-使用命名构造函数

转到:调用函数时如何使用命名参数?

Jenkinsfile:如何使用命名参数调用groovy函数

您如何使用命名参数来处理函数?

Scala 集合的元素可以使用命名参数和默认值构造同级实例?

使用命名参数在Kotlin中进行Dagger 2构造函数注入

使用默认参数而不是默认构造函数调用构造函数

如何检查是否在dart中使用命名构造函数创建了元素?

如何使用命名变量为const rvalue引用参数定义默认值?

在构造函数中使用默认参数

如何防止Json.NET在仍然使用默认值作为属性的同时,将默认值用于缺少的构造函数参数?

如何在F#中使用命名参数

如何在C++中使用命名参数

如何在函数中使用命名变量

如何使用命名函数调用attach / detach事件?

如何使用ByteBuddy创建默认构造函数?

如何使用默认构造函数伪造InitialContext

如何使用 LambdaMetafactory 调用默认构造函数

在匿名函数中使用命名函数

使用命名参数调用TCL proc

Spark:使用命名参数提交申请

部分使用命名结果参数来设置默认值

使用命名参数时出现“错误:应用于此参数的函数的类型为...”

如何使用默认参数在全局或命名空间中转发声明模板函数?

如何在Typescript中使用默认值定义可选的构造函数参数

使用Modelmapper,如何映射到没有默认/无参数构造函数的类?

没有反序列化的相应值时,如何使用构造函数的默认参数值?