groovy代码;(汪汪扮男子汉)喊(10)“;抛出java.lang.NullPointerException
我是groovy的新手。我只是写了下面的代码groovy代码;(汪汪扮男子汉)喊(10)“;抛出java.lang.NullPointerException,groovy,Groovy,我是groovy的新手。我只是写了下面的代码 public interface Man{ public void say(); public int shout(int x); } def wangwang = { println("wangwang!"); println(it) } //(wangwang as Man).say() (wangwang as Man).shout(10) 我在groovyConsole中运行它。这是输出 wangwan
public interface Man{
public void say();
public int shout(int x);
}
def wangwang = {
println("wangwang!");
println(it)
}
//(wangwang as Man).say()
(wangwang as Man).shout(10)
我在groovyConsole中运行它。这是输出
wangwang!
10
Exception thrown
java.lang.NullPointerException
at com.sun.proxy.$Proxy18.shout(Unknown Source)
at Man$shout.call(Unknown Source)
at ConsoleScript10.run(ConsoleScript10:13)
它打印出了“10”,那么它为什么会抛出异常呢?确实是一个非常有趣的场景!我认为这是因为Groovy试图将
println
返回的null
值转换为接口定义的int
。如果更改方法shout
的返回类型以使其无效,问题就会消失
如果你从另一边接近它,问题就会消失——如果你关闭它以返回一个值,例如
def wangwang = {
println("wangwang!");
println(it)
it
}
或者,如果您尝试运行下面的代码,可能会使问题更清楚
(println (10)).class