我有以下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
解决此问题?
答案 0 :(得分:4)
您的Flower
枚举应按以下方式实施:
enum Flower {
Tulip(1),
Daisy(2)
private int rank
Flower(int rank) {
this.rank = rank
}
int getRank() {
rank
}
}
在枚举构造函数中无需super()
调用。