实例化没有变量声明的对象是否有任何缺点?
问题描述:
它是确定如果程序是这样写的:实例化没有变量声明的对象是否有任何缺点?
class ReduceCode
{
void display()
{
System.out.print("Hello");
}
public static void main(String[] X)
{
new ReduceCode().display();
}
}
,而不是
class ReduceCode
{
void display()
{
System.out.print("Hello");
}
public static void main(String[] X)
{
ReduceCode rc = new ReduceCode();
rc.display();
}
}
我理解具有与参照申报对象背后的原因,所以,如果有任何实例变量涉及,将来可以使用该引用访问这些变量的值,但对于仅打印某些内容的方法(例如display()
),引用可以被忽略。
除此之外,没有参考的实例化有什么缺点?我在官方网站上找不到任何文档。这种技术是否在工业级使用?
答
我知道以这种方式使用对象作为可丢弃工具没有任何缺点。我实际上建议,如果你不需要实例引用,最好使用这种方法。
我唯一能想到这种做法可能令人讨厌的地方是调试时。你将没有机会检查创建的对象的细节。
Java 8中新的Streams
系统使用这样的流,它们通常只在表达式评估时短暂存在。
答
我发现的唯一缺点是在使用断点进行调试时。在第二个示例中,您可以将鼠标悬停在Eclipse中的rc
变量上并检查它。
但这是一个小的代价:第一种方式更可读,使对象的范围更清晰。
我个人发现隐式抛弃使用后的实例会产生更多可读的代码,因为我知道它是该实例唯一相关的用法。 – Oli 2015-03-31 08:17:56
没有功能差异,所以它只是一个可读性的问题,这是主观的。 – assylias 2015-03-31 08:20:06
只要它不诱惑像使用'{{...}} [初始化]这样的技巧就可以了(http://stackoverflow.com/questions/29363254/double-brace-initialization-and-serialization/29363359#29363359)。 – 2015-03-31 08:32:42