【问题标题】:Are there any disadvantages instantiating an object without variable declaration? [closed]实例化一个没有变量声明的对象有什么缺点吗? [关闭]
【发布时间】:2015-03-31 08:15:56
【问题描述】:

程序这样写可以吗:

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() 这样的方法,只有打印一些东西,可以忽略引用。

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

【问题讨论】:

  • 我个人发现使用后隐式丢弃实例会产生更具可读性的代码,因为我知道这是实例的唯一相关用途。
  • 没有功能上的区别,所以只是可读性的问题,这是主观的。
  • 只要不尝试使用{{ ... }}initialization之类的技巧就可以。

标签: java instance new-operator instantiation


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    Java 8 中的新 Streams 系统使用这样的流,它们通常只存在很短的时间,而表达式正在计算。

    【讨论】:

      猜你喜欢
      • 2013-07-26
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      相关资源
      最近更新 更多