Groovy枚举失败
我在Groovy中声明了一个简单的枚举,它在Java中完全有效。我犯了个错误 原因:groovy.lang.GroovyRuntimeException:找不到以下项的匹配构造函数:AdditionReproperties(字符串、整数、LinkedHashMap) 这是枚举Groovy枚举失败,groovy,enums,Groovy,Enums,我在Groovy中声明了一个简单的枚举,它在Java中完全有效。我犯了个错误 原因:groovy.lang.GroovyRuntimeException:找不到以下项的匹配构造函数:AdditionReproperties(字符串、整数、LinkedHashMap) 这是枚举 @ToString enum AdmixtureProperties { SVALUE(prop:"1", num: 1), PVALUE(prop:"5", num: 3); pri
@ToString
enum AdmixtureProperties {
SVALUE(prop:"1", num: 1),
PVALUE(prop:"5", num: 3);
private String prop
private int num
AdmixtureProperties(String prop, int num){
this.prop=prop
this.num=num
}
}
我在Groovy中声明了一个简单的枚举,它在Java中完全有效
这在Java中不是有效的枚举,原因有二
- 语句末尾缺少分号
- 不支持的构造函数调用语法
SVALUE(prop:“1”,num:1)
SVALUE(prop:"1", num: 1),
PVALUE(prop:"5", num: 3);
与
这不是因为您试图使用命名参数吗?我认为使用命名参数的CTOR/methods应该有一个
Map
作为参数,但这可能已经改变了。我使用一个命名参数进行操作,并且没有任何问题。它不仅仅是在抱怨地图,它在寻找字符串、整数和地图,这让我感到困惑。它使用了多个参数,但出现错误。您是在没有指定参数的情况下尝试的,还是在ctor def中使用了Map
参数?这不是“在Java中完全有效”我同意这个答案,并作为注释,您必须选择:a)使用命名参数并删除代码中的构造函数,或b)不使用命名参数并使用此答案中的构造函数。所以要么是命名的params+无构造函数,要么是无命名的params+构造函数(除非你想写一个构造函数,它接受一个我个人认为不可读的映射)。
SVALUE("1", 1)
PVALUE("5", 3)