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
枚举应予执行。