1

这段代码对我来说很好。

public class ABC 
{
  public int sayHello()
  {
    System.out.println("Hello Friends...!!!");
    return 1;
  }
}

public class XYZ
{
  public static void main(String[] args){
    // 1 Option
    ABC objABC = new ABC();
    int i = objABC.sayHello();

    // 2 Option
    int j = new ABC().sayHello();
  }
}

在这里,我用两种不同sayHello()的方式调用了方法。Class ABC我只想知道使用哪个选项是最佳和良好的做法。

4

8 回答 8

2

绝对是第一选择

1)如果您需要再次调用相同的方法,您将不必再次调用构造函数。也就是说,您不会创建另一个实例。

2)如果您想关闭流或将其设置为 null(就像 IO 相关操作所必需的那样),第二个选项不会为您提供任何参考对象。

于 2013-07-09T09:51:42.723 回答
1
  • 使用ABC objABC = new ABC(),您将始终拥有对该对象的引用。与new ABC()您无法访问第二次。
  • 假设有两种方法。sayHello()sayGoodBye()然后使用第一种方法。您只需要使用 objABC.sayHelloand调用它们objABC.sayGoodBye()
  • 但在第二种情况下,您正在创建一个没有引用的对象并在其上调用该方法。如果不通过某个引用变量引用它,就不能对同一个对象执行一些其他操作。

所以最好使用第一个选项,即ABC objABC = new ABC();

于 2013-07-09T09:47:21.943 回答
1

在这两种情况下,您都使用类的引用ABC来调用方法sayHello()。在#1的情况下,可以重用引用来进行其他调用,而在#2 的情况下,对已创建对象的引用将丢失,因此您无法对该实例进行任何进一步的调用。

没有这样的最佳答案。当您想要保留实例和对它的引用时,请使用#1 。

于 2013-07-09T09:48:03.300 回答
1

创建一个对象来调用一个方法的整个想法很奇怪,但它总是取决于它。

选项 1:如果您将来需要 objABC 来进一步调用 sayHello() ,这会更好。

选项 2:如果您只对一个电话感兴趣,那么可以。但在这种情况下,我会考虑使用静态方法来保存对象实例化。

于 2013-07-09T09:48:34.250 回答
1

这取决于。如果您只想执行该方法,而不引用调用该方法的对象:

int j = new ABC().sayHello(); 

如果您想保留对该对象的引用,并在以后重用它,那么:

ABC objABC = new ABC();
            int i = objABC.sayHello();
于 2013-07-09T09:49:00.933 回答
1

如果你只是想执行方法,没有对象的引用。所以它只用于调用一个方法。

int j = new ABC().sayHello(); 

但,

ABC objABC = new ABC();
int i = objABC.sayHello(); 

如果您将来需要 objABC 来进一步调用 sayHello(),这会更好。

于 2013-07-09T09:53:47.947 回答
1

ABC objABC = new ABC();好多了,你有你的对象的实例,你可以随时使用它

如果您想像 int j = new ABC().sayHello();我认为最好将其设为静态那样进行调用,则可以在不创建类实例的情况下调用它ABC.sayHello()

于 2013-07-09T09:51:28.380 回答
0

绝对是第一选择

1)如果您需要再次调用相同的方法,您将不必再次调用构造函数。也就是说,您不会创建另一个实例并节省创建新对象的加载时间。

2)如果您想关闭一个流或将其设置为 null(就像 IO 相关操作所必需的那样),第二个选项不会为您提供任何引用对象来执行此操作并且每次调用构造函数。

于 2013-07-09T11:52:40.527 回答