首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >groovy代码"(wangwang as Man).shout(10)“抛出java.lang.NullPointerException

groovy代码"(wangwang as Man).shout(10)“抛出java.lang.NullPointerException
EN

Stack Overflow用户
提问于 2015-06-04 11:59:46
回答 1查看 42关注 0票数 1

我是新来的。我刚写了下面的代码

代码语言:javascript
复制
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上运行它。这是输出

代码语言:javascript
复制
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",那么它为什么要抛出异常呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-04 13:15:58

非常有趣的场景,确实!我认为这是因为Groovy尝试将println返回的println值转换为接口定义的int。如果将方法shout的返回类型更改为无效,问题就会消失。

如果你从另一边接近它,这个问题就会消失--如果你用闭包返回一个值。

代码语言:javascript
复制
def wangwang = {
   println("wangwang!");
   println(it)
   it
}

或者,如果您尝试运行下面的代码,可能会使事情变得更清楚。

代码语言:javascript
复制
(println (10)).class
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30643295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档