编译器不会抱怨返回类型.为什么?

sha*_*Hwk 1 java compilation

我写了以下java代码,我期望编译器会抱怨它.但我没有得到任何错误.为什么是这样 ?

    public static void main(String[] args) {
        Ba ba = new Ba();

        ba.fetchSomeValues();

    }

    public String fetchSomeValues(){
        return "Hello";     
    }

}
Run Code Online (Sandbox Code Playgroud)

我调用的方法fetchSomeValues()应该返回"Hello"(这是一个字符串),并且在main方法中我已经包含ba.fetchSomeValues();但没有将它初始化为String变量.编译器不抱怨为什么会这样?

Ada*_*old 10

您不必将返回值分配给变量.你不必对它们做任何事情.

虽然通常不建议只删除某个方法的某些返回值.

计数器示例可能是返回与键关联的先前值Mapput方法.如果您不关心是否存在先前的值,则只需忽略返回值.

Map<Integer, String> map = new HashMap<Integer, String>();
test.put(1, "one"); // we don't assign the return value since we don't care
Run Code Online (Sandbox Code Playgroud)

因此,简而言之,编译器无法判断您是否关心返回值.如果在您使用该方法的上下文中值很重要并且忽略它,那么这只是一个问题.


MBy*_*ByD 5

这对于忽略方法的返回值是绝对有效的(尽管并不总是建议).