Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一个应该返回值的方法可以像不返回任何值(void)的方法一样使用吗?_Java_Android_Methods_Return_Void - Fatal编程技术网

Java 一个应该返回值的方法可以像不返回任何值(void)的方法一样使用吗?

Java 一个应该返回值的方法可以像不返回任何值(void)的方法一样使用吗?,java,android,methods,return,void,Java,Android,Methods,Return,Void,我遇到了以下代码: sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL); void performOperation() { doSomething(); } 方法registerListener()返回一个布尔值(,尽管这段代码使用它就像不返回任何东西一样 这怎么可能呢?您不必使用registerListener()返回的值 考虑以下代码: sensorManager.re

我遇到了以下代码:

sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
void performOperation() {
    doSomething(); 
}
方法registerListener()返回一个布尔值(,尽管这段代码使用它就像不返回任何东西一样


这怎么可能呢?

您不必使用registerListener()返回的值

考虑以下代码:

sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
void performOperation() {
    doSomething(); 
}
doSomething
执行某些操作并返回
true
如果操作成功,则返回
false

performOperation
不会
返回
一个东西,它只是执行操作

另一个例子:

:

返回: 当且仅当成功删除文件或目录时为true;否则为false


您不必使用
delete
方法返回的值(但强烈建议使用)


澄清

在这种情况下,你可能会被弄糊涂

方法声明如下:

修饰符返回类型名称(参数…)


当您的方法声明返回某个内容时,它必须返回某个内容!但是如果您在另一个不返回任何内容的方法中使用它(void),则不会强制您使用此值。

Java不会强制您将表达式的值分配给变量,包括方法调用。标准库中有很多这样的示例—例如,返回与键关联的以前的值,这可能很有用,但通常会被忽略

Map<String, String> map = new HashMap<String, String>();
map.put("a", "1"); // Ignoring the returned value
String previousValue = map.put("a", "2"); // Assigning the returned value ("1") to a new variable

在Java中,每个表达式都可以通过添加分号生成语句。表达式计算的值将被忽略

这并不局限于方法调用表达式;以下内容也是有效的

int a=2;
a + 40;  // compute 42, don't store
您可能比您想象的要多。变量赋值也是一个表达式,它的值通常会被丢弃。您很少看到这样的代码:

int b = (a = 56); // store result of assignment

在这种调用中没有什么是非法的,返回类型可以保持未使用状态。还有,user1873880所说的。不必使用返回类型。但是我不应该设置doSomething()的返回值吗对于一些东西?比如布尔变量或if语句?很抱歉,我不明白,因为我了解了一个返回值的方法(在您的例子中是doSomething())应分配给变量或将获取该值的某个对象…@user1919052 yes将该语句分配给布尔值,然后在执行该方法后,如果支持并成功启用传感器,则布尔变量值将为真。@user1919052:仅当您需要将该值用于某个对象时。这很好(也是很常见的)不使用函数的返回值。当然,有时需要使用返回值,这取决于函数,但有时返回值只是您可能不需要使用的额外信息。(在这种情况下,我倾向于认为知道传感器是否存在并启用是有用的,但可能之前的代码已经确定了这一点。)哦,现在编辑后我明白了。谢谢你真的帮助了我:)@user1919052我很高兴它帮助了你!:)