Java中的孤儿对象好还是坏?

时间:2015-04-14 14:16:36

标签: java oop object memory-management orphan

我想了解Java编程中的对象创建最佳实践。 我在下面给出了一个例子请检查并建议我 Java中的孤儿对象好还是坏?

我有一个Shape界面。

  1. Circle implements Shape
  2. Square implements Shape
  3. Cube implements Shape
  4. Sphere implements Shape
  5. 方法#1导致孤儿对象,方法#2导致不必要的引用。哪种方法是最佳做法?

    方法#1

        Shape shape;
        shape = new Circle();  // CREATES CIRCLE OBJECT
        shape.draw();
        shape = new Cube();    // CREATES CUBE OBJECT
        shape.draw();
        shape = new Sphere();  // CREATES SPHERE OBJECT
        shape.draw();
        shape = new Square();  // CREATES SQUARE OBJECT
        shape.draw();
    

    方法#2

        Circle circle = new Circle();
        circle.draw();
        Cube cube = new Cube();
        cube.draw();
        Sphere sphere = new Sphere();
        sphere.draw();
        Square square = new Square();
        square.draw();
    

3 个答案:

答案 0 :(得分:2)

在Java中,您创建对象以完成某些任务,当您完成它们时,您将删除对它们的引用,以便对它们进行垃圾回收。您对这些对象的引用数量很少是性能问题;通常问题来自:

  1. 在可以重复使用时创建太多对象
  2. 您在清理引用时遇到错误(内存泄漏)。
  3. 您主要关心的是您拨打new的频率。

答案 1 :(得分:1)

如果在调用方法draw后不需要对象,则可以忘记对它们的引用。它们将有资格进行垃圾收集,当垃圾收集器完成工作时,它们占用的内存将被恢复。

因此,如果您关注内存管理,那么“孤立”对象就是标准的Java实践。

答案 2 :(得分:1)

如果你只是创建一次性使用的对象,那么这两种方法都没有。不要为单个呼叫分配参考,只需直接拨打电话:

new Circle().draw();
new Cube().draw();
new Sphere().draw();
...

其他所有内容都让人感到困惑,他们提供的参考资料实际上并不需要任何阻碍可读性的内容。