首页 > 解决方案 > 性能:内部接口与单独的接口类

问题描述

在我的 android 项目中,我使用 4Recyclerviews中的 4 种不同的方法,Activities我需要 3 种方法onClickonButtonClick并且onDeleteClick. 有些方法使用了有些方法没有。首先,我在我需要interface的每一个单曲中都创建了一个内部,并为它们提供了适当的方法。Activity但是因为它们在重复,所以我创建了一个interface包含所有 3 种方法的单独类,然后在我的 4 中引用它Activities。我覆盖了我需要的方法和我不需要的方法,我只是留下了空的身体。最好/首选的方式是什么?

1.

public class A {
                private OnItemClickListener mListener;

                public interface OnItemClickListener {
                    void onDeleteClick(int position);
                }

                ...
                @Override
            public void onDeleteClick(int position) {
                errase(position);
            }
}

2.

public interface OnItemClickListener {
        void onItemClick (int position);
        void onDeleteClick (int position);
        void onButtonClick (int position);
    }

public class A {
     private OnItemClickListener mListener;

     ...
     @Override
            public void onItemClick(int position) {
                 //empty because I dont need it here
            }

            @Override
            public void onButtonClick(int position) {
                 //empty because I dont need it here
            }

            @Override
            public void onDeleteClick(int position) {
                errase(position);
            }
}

标签: javamethodsinterface

解决方案


您可以创建一个适配器类并为接口中声明的所有方法提供空实现,这将减少重复的代码行,然后对其进行扩展。(尽管不确定这是否是 Java 8 或更高版本的最佳方式)在您的代码中有点像

interface OnItemClickListener {
    void onItemClick(int position);
    void onDeleteClick(int position);
    void onButtonClick(int position);
}

abstract class Adapter implements OnItemClickListener {
    public void onItemClick(int position) {};
    public void onDeleteClick(int position) {};
    public void onButtonClick(int position) {};

}

public class A extends Adapter
{
    @Override
    public void onDeleteClick(int position) {
        errase(position);
    }
}

推荐阅读