2015-03-31 74 views
0

它是确定如果程序是这样写的:实例化没有变量声明的对象是否有任何缺点?

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()),引用可以被忽略。

除此之外,没有参考的实例化有什么缺点?我在官方网站上找不到任何文档。这种技术是否在工业级使用?

+1

我个人发现隐式抛弃使用后的实例会产生更多可读的代码,因为我知道它是该实例唯一相关的用法。 – Oli 2015-03-31 08:17:56

+0

没有功能差异,所以它只是一个可读性的问题,这是主观的。 – assylias 2015-03-31 08:20:06

+0

只要它不诱惑像使用'{{...}} [初始化]这样的技巧就可以了(http://stackoverflow.com/questions/29363254/double-brace-initialization-and-serialization/29363359#29363359)。 – 2015-03-31 08:32:42

回答

0

我知道以这种方式使用对象作为可丢弃工具没有任何缺点。我实际上建议,如果你不需要实例引用,最好使用这种方法。

我唯一能想到这种做法可能令人讨厌的地方是调试时。你将没有机会检查创建的对象的细节。

Java 8中新的Streams系统使用这样的流,它们通常只在表达式评估时短暂存在。

1

我发现的唯一缺点是在使用断点进行调试时。在第二个示例中,您可以将鼠标悬停在Eclipse中的rc变量上并检查它。

但这是一个小的代价:第一种方式更可读,使对象的范围更清晰。

相关问题