我编写了以下java代码,我希望编译器会抱怨它。但我没有得到任何错误。这是为什么?
public static void main(String[] args) {
Ba ba = new Ba();
ba.fetchSomeValues();
}
public String fetchSomeValues(){
return "Hello";
}
}
我正在调用方法fetchSomeValues()
,它应该返回“Hello”(这是一个字符串),并且在main方法中我已经包含ba.fetchSomeValues();
而没有将其初始化为String
变量。编译器没有抱怨为什么会这样?
答案 0 :(得分:10)
您不必为变量指定返回值。你不必对它们做任何事情。
虽然通常不建议只删除某个方法的某些返回值。
计数器示例可能是Map
的{{1}}方法,它返回与密钥关联的先前值。如果您不关心是否存在先前的值,则只需忽略返回值。
put
因此简而言之,编译器无法判断您是否关心返回值。 如果您在使用该方法的上下文中值很重要并且忽略它,那么这只是一个问题。
答案 1 :(得分:5)
这对于忽略方法的返回值是绝对有效的(尽管并不总是建议)。
答案 2 :(得分:2)
在Java中,您可以忽略刚刚发现的返回值。
答案 3 :(得分:2)
这种行为并非特定于Java,它实际上是当今所有主流(甚至那些不太常见)语言的标准。即使在FP语言中,重点是无副作用的函数,其唯一的点就是返回值,这是允许的。
你应该问自己,我是否想使用一种迫使我分配每个回报值的语言?这是一种方便的语言吗?
答案 4 :(得分:2)
ba.fetchSomeValues();
会返回字符串 "Hello"
,但由于您没有 left var (例如String s = ba.fetchSomeValues();
),具有"Hello"
值的字符串对象,在fetchSomeValues()
方法中创建,只是未使用 。
答案 5 :(得分:2)
此代码没有错。 fetchSomeValues()返回一个字符串,但您不必分配该值。 通常你可以编写String returnedValue = a.fetchSomeValues()但是没有必要