2015-07-20 57 views
2

你在哪里放置匿名类的实例?匿名类实例放置

public class MyClass { 
    // Variables 
    private Api api; 

    // Functions 
    public void callApi() { 
     api.get(<...>, responseListener) 
    } 

    // Where to put that? Top of the file, bottom, next to function? 
    private ResponseListener responseListener = new ResponseListener() { 
     @Override 
     public void onSuccess(Object response) { 
     } 
    }; 
} 

而且,在这种情况下,最好是直接在api调用中实例化吗?

public void callApi() { 
     api.get(<...>, new ResponseListener() { 
      @Override 
      public void onSuccess(Object response) { 
      } 
     }); 
    } 
+0

在您的第二个版本中,每次调用callApi时都会创建'ResponseListener'的新实例。在第一个版本中,您正在重用已经创建的实例。 – Pshemo

+0

第一个片段声明一个实例变量,并用一个匿名内部类的实例初始化它。我会把它放在所有其他实例变量声明中:在类的顶部。 –

回答

1

这是您做出的决定。您最初编写它的方式是,您有一个名为responseListener的字段,该字段被初始化一次并在每个调用中重用。如果这是你想要的行为,你可以将它放在callApi()方法之上(其他字段,api)。或者放在原地。他们都没问题,只是你喜欢哪个。

但是,如果您希望每次调用callApi()时都需要一个新实例,那么将其放入callApi()内部会很有意义。

因此,无论你把它放在callApi()还是外面,但只有你可以决定哪个更好。如果你想在外面,那么外面的地方并不重要,而且只有你可以决定哪个更好。

+1

我无法找到关于变量放置的许多最近的[文档](http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141855.html#1852)。但是对于匿名类,它似乎是基于编码者的需要和/或偏好。 – mbmc