HashSet上Groovy缺少PropertyException?
我的应用程序具有以下目录结构:HashSet上Groovy缺少PropertyException?,groovy,runtimeexception,Groovy,Runtimeexception,我的应用程序具有以下目录结构: myapp/ src/ com.me.myapp/ Driver.groovy Fizz.groovy stages (package) AbstractStage.groovy impl (package) DefaultStage.groovy 其中: clas
myapp/
src/
com.me.myapp/
Driver.groovy
Fizz.groovy
stages (package)
AbstractStage.groovy
impl (package)
DefaultStage.groovy
其中:
class Driver {
static void main(String[] args) {
AbstractStage stage1 = new DefaultStage()
stage1.derp
}
}
abstract class AbstractStage {
Set<Fizz> fizzes = new HashSet<Fizz>()
void derp() {
println "I have " + fizzes.size + " attached fizzes!"
}
abstract void doSomething()
}
class DefaultStage extends AbstractStage {
Set<Fizz> executedFizzes = new HashSet<Fizz>()
@Override
void doSomething() {
// TODO: Implement
}
}
…其中Driver.groovy:6
对应于调用derp
的行
这里发生了什么?
derp
是一个方法,而不是属性,因此您需要调用它:
static void main(String[] args) {
AbstractStage stage1 = new DefaultStage()
stage1.derp() // You need the '()' here.
}
谢谢@Igor Shults(+1)-但非常奇怪。为什么Groovy允许我执行
println“Blah!”
(而不是println(“Blah”)
),但我不能删除derp
调用的参数?@IAmYourFaja我想这是因为它需要一个参数。因此,您可能无法单独执行println
,但是println'Blah'
很好,因为Groovy意识到它是一个方法,而不是一个属性/变量。
static void main(String[] args) {
AbstractStage stage1 = new DefaultStage()
stage1.derp() // You need the '()' here.
}