我是新来的。我刚写了下面的代码
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",那么它为什么要抛出异常呢?
发布于 2015-06-04 13:15:58
非常有趣的场景,确实!我认为这是因为Groovy尝试将println返回的println值转换为接口定义的int。如果将方法shout的返回类型更改为无效,问题就会消失。
如果你从另一边接近它,这个问题就会消失--如果你用闭包返回一个值。
def wangwang = {
println("wangwang!");
println(it)
it
}或者,如果您尝试运行下面的代码,可能会使事情变得更清楚。
(println (10)).classhttps://stackoverflow.com/questions/30643295
复制相似问题