2015-07-20 56 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