Groovy枚举失败

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

我在Groovy中声明了一个简单的枚举,它在Java中完全有效。我犯了个错误

原因:groovy.lang.GroovyRuntimeException:找不到以下项的匹配构造函数:AdditionReproperties(字符串、整数、LinkedHashMap)

这是枚举

 @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)
要使此Groovy代码有效,请修复构造函数调用,即替换此代码:

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)