在java中,我希望返回必须捕获的值的方法调用不会抛出编译错误。为什么?
在Java中,如果一个方法定义返回某个内容,调用该方法的类必须准备将该方法的返回值捕获到一个变量中。至少我从逻辑上理解是这样的。但我有一个奇怪的情况,编译器没有抱怨 我有一个定义了方法的动物界面。一个实现Animal接口的AnimalImpl类,以及一个将组合用于Animal类型实例变量的Lion类 这是密码。为什么编译器不会发狂 接口: 实施: 客户:在java中,我希望返回必须捕获的值的方法调用不会抛出编译错误。为什么?,java,compiler-errors,Java,Compiler Errors,在Java中,如果一个方法定义返回某个内容,调用该方法的类必须准备将该方法的返回值捕获到一个变量中。至少我从逻辑上理解是这样的。但我有一个奇怪的情况,编译器没有抱怨 我有一个定义了方法的动物界面。一个实现Animal接口的AnimalImpl类,以及一个将组合用于Animal类型实例变量的Lion类 这是密码。为什么编译器不会发狂 接口: 实施: 客户: 编译器怎么能不抛出错误呢?为什么会出现这种情况?您不必在变量中存储返回值。返回的结果并不意味着您必须保留它。您不必在变量中存储返回值。返回的值
编译器怎么能不抛出错误呢?为什么会出现这种情况?您不必在变量中存储返回值。返回的结果并不意味着您必须保留它。您不必在变量中存储返回值。返回的值并不意味着您必须保留它。使用方法返回的值不是语言要求 这种情况经常发生,例如:
Set<Integer> set = new HashSet<Integer>();
set.add(1); // returned boolean ignored
Set Set=newhashset();
集合。添加(1);//返回的布尔值被忽略
返回一个布尔值,指示是否由于使用给定参数调用该集而更改了该集(如果该集已包含该值,则返回false),但大多数情况下,返回的值都会像在代码段中一样被忽略。使用方法返回的值不是语言要求 这种情况经常发生,例如:
Set<Integer> set = new HashSet<Integer>();
set.add(1); // returned boolean ignored
Set Set=newhashset();
集合。添加(1);//返回的布尔值被忽略
返回一个布尔值,指示是否由于使用给定参数调用该集而更改了该集(如果该集已包含该值,则返回false),但大多数情况下,返回的值都会被忽略,就像在代码段中一样。编译器不会出错,因为您编写的所有内容都是合法的java
您没有在问题中明确指出编译器应该在哪里出错。在不了解更多信息的情况下,我可以假设您认为,仅仅因为一个方法具有返回类型,该方法的调用方就必须将其分配给某个对象。Java根本不强制执行这一点——一个类的客户端可能会调用一个方法,并在法律上完全忽略其返回值。编译器不会出错,因为您编写的所有内容都是合法的Java
您没有在问题中明确指出编译器应该在哪里出错。在不了解更多信息的情况下,我可以假设您认为,仅仅因为一个方法具有返回类型,该方法的调用方就必须将其分配给某个对象。Java根本没有强制执行这一点——一个类的客户端可能会调用一个方法,并在法律上完全忽略它的返回值。我必须说,我从未见过有人因为没有出错而如此心烦意乱 首先,Java不会强制您捕获从方法返回的值 其次,并非所有Java方法都返回值。有些是
void
碰巧您经常需要捕获返回值来做其他事情,但您不必这样做
别担心。如果你和我一样,你的编译器和运行时日志很快就会崩溃。尽情享受吧。我必须说,我从未见过有人因为没有犯错而如此心烦意乱 首先,Java不会强制您捕获从方法返回的值 其次,并非所有Java方法都返回值。有些是
void
碰巧您经常需要捕获返回值来做其他事情,但您不必这样做
别担心。如果你和我一样,你的编译器和运行时日志很快就会崩溃。尽情享受吧。编译错误不是抛出的,而是打印出来的。在Java(和C一样)中,忽略方法调用的返回参数是完全合法的。编译错误不是抛出的,而是打印出来的。在Java(和C一样)中,忽略方法调用的返回参数是完全合法的。感谢我对整个编译语言世界都是新手。我有脚本语言背景。谢谢你的帮助。请注意,尽管有人可能会争论其优点,但不从Python或Ruby函数获取结果也是合法的。与Java的不同之处在于,它们的函数总是返回一些东西(Python中没有,Ruby中没有)。我有脚本语言背景。谢谢你的帮助。请注意,尽管有人可能会争论其优点,但不从Python或Ruby函数获取结果也是合法的。与Java的不同之处在于,它们的函数总是返回一些东西(Python中没有,Ruby中没有)。
public class Lion {
private Animal ani;
public String executeAnimalMethod(){
ani = new AnimalImpl();
ani.eat("carrots");
ani.walk(100);
ani.fly(100);
return null;
}
}
Set<Integer> set = new HashSet<Integer>();
set.add(1); // returned boolean ignored