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我很高兴它帮助了你!:)