sme*_*eeb 3 groovy enums constructor
我有以下 Groovy 枚举:
enum Flower {
Tulip(1),
Daisy(2)
private int rank
Flower(int rank) {
super()
this.rank = rank
}
int getRank() {
rank
}
}
Run Code Online (Sandbox Code Playgroud)
我还有一个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
}
}
Run Code Online (Sandbox Code Playgroud)
GardenGenerator当我尝试像这样创建这个实例时:
GardenGenerator gg = new GardenGenerator(Flower.Daisy, 5, 10, true)
Run Code Online (Sandbox Code Playgroud)
我在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)
Run Code Online (Sandbox Code Playgroud)
我需要做什么来Flower解决这个问题?
您的Flower枚举应按如下方式实现:
enum Flower {
Tulip(1),
Daisy(2)
private int rank
Flower(int rank) {
this.rank = rank
}
int getRank() {
rank
}
}
Run Code Online (Sandbox Code Playgroud)
不需要super()在枚举的构造函数中进行调用。