2017-09-16 70 views
2

我有以下的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()

回答

3

如下您Flower枚舉應予執行。