Groovy的枚举构造匹配

Groovy的枚举构造匹配

问题描述:

我有以下的Groovy枚举:Groovy的枚举构造匹配

enum Flower { 
    Tulip(1), 
    Daisy(2) 

    private int rank 

    Flower(int rank) { 
     super() 
     this.rank = rank 
    } 

    int getRank() { 
     rank 
    } 
} 

我也有一个GardernGenerator类,需要一个Flower实例作为其构造函数的参数之一:

class GardenGenerator { 
    Flower flower 
    int length 
    int width 
    boolean isOrganic 

    GardenGenerator(Flower flower, int length, int width, boolean isOrganic) { 
    super() 

    this.flower = flower 
    this.length = length 
    this.width = width 
    this.isOrganic =isOrganic 
    } 

    Garden createGarden() { 
    // ...blah whatever 
    } 
} 

当我尝试创建此类GardenGenerator实例如下:

GardenGenerator gg = new GardenGenerator(Flower.Daisy, 5, 10, true) 

我上Flower枚举构造有关的问题

Caused by: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: com.me.myapp.Flower(java.lang.String, java.lang.Integer, java.lang.Integer) 

我需要做什么做Flower解决这一问题?

enum Flower { 
    Tulip(1), 
    Daisy(2) 

    private int rank 

    Flower(int rank) { 
     this.rank = rank 
    } 

    int getRank() { 
     rank 
    } 
} 

没有必要进行枚举的构造函数调用super()

如下您Flower枚举应予执行。