Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Groovy脚本中@Field变量的使用_Java_Logging_Groovy - Fatal编程技术网

Java Groovy脚本中@Field变量的使用

Java Groovy脚本中@Field变量的使用,java,logging,groovy,Java,Logging,Groovy,我的Groovy脚本中有一个带有全局变量的脚本 我在函数中使用它时遇到问题。我可以知道原因还是正确的方法吗? 我要用它做一个伐木工人。可以访问其他基本数据类型,但我不能 @Field def log = Logger.getLogger("NameOfLogger") log.info("TEST") testFunction() private void testFunction() { //cannot use the log variable here } 我现在知道原因了。这是

我的Groovy脚本中有一个带有全局变量的脚本 我在函数中使用它时遇到问题。我可以知道原因还是正确的方法吗? 我要用它做一个伐木工人。可以访问其他基本数据类型,但我不能

@Field def log = Logger.getLogger("NameOfLogger")

log.info("TEST")

testFunction()

private void testFunction() {
 //cannot use the log variable here
}

我现在知道原因了。这是因为我将它声明为
def

但是我仍然不知道为什么
def
不能被使用的真正原因。

以下代码对我很有用(我没有尝试使用log,但使用了在线groovy控制台):

输出:

Global Person(John, 30)
Inside method: Person(John, 30)
所以首先要确保你有合适的进口产品

现在,值得一提的是,groovy创建了一个隐式类,字段注释改变了全局变量的范围,并将其移动到该隐式类的字段中,这样
person
testFunction
都将属于该类,并且从方法中访问字段不会有问题

Global Person(John, 30)
Inside method: Person(John, 30)