ex.
new SportsCar().drive();
与。
SportsCar sc = new SportsCar();
sc.drive();
假设您目前没有理由需要再次使用SportsCar实例?
在您的示例中,临时保存引用与不保存引用之间没有区别。编译器很可能内联两行版本,使其看起来像一行版本。
不过,可能还有其他原因它很有用。例如,您可能希望以不同于 drive()
方法的方式处理来自构造函数的异常:
SportsCar sc;
try {
sc = new SportsCar();
try {
sc.drive();
} catch (Exception e) {
// handle exceptions thrown by drive()
}
} catch (Exception e) {
// handle exceptions thrown during object construction
}