由于无法访问的语句,此代码无法编译

时间:2016-09-14 07:01:15

标签: java

我已经尽力以另一种方式重现这一点,但似乎只有这一行才会出错(请原谅评论):

return foo.containsKey(MARKET_DATA) && !foo.get(MARKET_DATA).isMissing();/*mapping code can inject a Missing type*/;

但是我键入它会给我一个错误:"无法访问的语句"。这是为什么?

3 个答案:

答案 0 :(得分:10)

如果删除评论,则很明显:

return foo.containsKey(MARKET_DATA) && !foo.get(MARKET_DATA).isMissing();;

请注意最后的两个分号:Java中允许空语句 ,但这个特定的空语句无法访问,因为前一个语句总是 return s。

(为避免疑义,评论不应以;终止。

答案 1 :(得分:2)

问题是因为评论后的;/*mapping code can inject a Missing type*/;

编译器认为在return语句之后还有另一个语句。如果您在评论后删除;,它将正常工作(或将其放在评论中)。

答案 2 :(得分:0)

根据Java specs ;是一个空语句。所以返回后有一个声明