私は公開インターフェースを使用してクラスをリファクタリングしており、使用法について考えると、次のように尋ねました。
いくつかのより大きなクラス内で(インスタンス変数として)以下を宣言することの違いは何ですか?
private final OnClickListener mButtonOnClickListener = new OnClickListener() {
@Override
public void onClick(View view) {
//some codes
}
};
vs次のように匿名の内部クラスとして宣言する(オンザフライ):
private void someFunctionInClass() {
someOtherFunctionThatTakesAnOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//some codes
}
});
}
より具体的には、前者はまだ匿名の内部クラスと見なされますか?私はこの回答で匿名の内部クラスを読んだ
別のクラスのメソッドの本体内で作成および定義されたものです
私が示した最初の例は、別のクラスの本体内で作成および定義されていますが、2番目の例のように別のクラスのメソッド内では定義されていません。それはまだ匿名の内部クラスですか?さらに、一方と他方で受け入れられている慣行は何ですか?新しいオブジェクトを再作成する必要がないため、匿名の内部クラスをインスタンス変数として宣言する方が効率的ですか?