Java 性能:内部接口与单独的接口类

Java 性能:内部接口与单独的接口类,java,methods,interface,Java,Methods,Interface,在我的android项目中,我在4个不同的活动中使用了4个Recyclerviews,我需要3种方法onClick,onbutton单击和ondelete单击。有些方法被使用,有些则没有。首先,我在我需要的每个活动中创建了一个内部接口,并使用它们创建了一个适当的方法。但是因为它们是重复的,我用所有3种方法创建了一个单独的接口类,然后在我的4个活动中引用它。我覆盖了我需要的和我不需要的方法,我只是留下了一个空的身体。最好/首选的方式是什么 一, 二, 及 您可以创建一个适配器类,并为接口中声明的所

在我的android项目中,我在4个不同的
活动中使用了4个
Recyclerviews
,我需要3种方法
onClick
onbutton单击
ondelete单击
。有些方法被使用,有些则没有。首先,我在我需要的每个
活动
中创建了一个内部
接口
,并使用它们创建了一个适当的方法。但是因为它们是重复的,我用所有3种方法创建了一个单独的
接口
类,然后在我的4个
活动
中引用它。我覆盖了我需要的和我不需要的方法,我只是留下了一个空的身体。最好/首选的方式是什么

一,

二,


您可以创建一个适配器类,并为接口中声明的所有方法提供空实现,这将减少重复的代码行,然后扩展它。(但不确定这是否是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);
    }
}

您可以创建一个适配器类,并为接口中声明的所有方法提供空实现,这将减少重复的代码行,然后扩展它。(但不确定这是否是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);
    }
}
在我看来,没有“最佳/首选”方式:

  • 由于嵌套接口隐式地不在内部(它们是隐式静态的),所以不存在对封闭类实例的隐藏引用。因此,普通接口和嵌套接口之间的性能差异应该为零

  • Java风格指南不/不会推荐一种形式优于另一种形式作为通用语句

  • 我还没听说过有人试图对此进行科学的可用性研究

  • 我还没听说过有人试图科学地衡量开发人员对此的看法

  • 这就给我们留下了“随机的贡献者意见”,我不相信这些意见能在这方面指导我。(每个人在阅读代码时的心理过程都是不同的…)

  • 一句话:没什么


    根据实际情况,由您决定您认为哪个更具可读性/可维护性。但是:

    • 我建议你在选择上保持一致

    • 如果您的API可能被其他人使用/维护,最好与他们讨论。与同事达成共识将是一件好事,甚至是“同意不同意”,然后继续前进

    但不要挂断电话,因为这绝对是个小问题。

    在我看来,没有“最佳/首选”方式:

  • 由于嵌套接口隐式地不在内部(它们是隐式静态的),所以不存在对封闭类实例的隐藏引用。因此,普通接口和嵌套接口之间的性能差异应该为零

  • Java风格指南不/不会推荐一种形式优于另一种形式作为通用语句

  • 我还没听说过有人试图对此进行科学的可用性研究

  • 我还没听说过有人试图科学地衡量开发人员对此的看法

  • 这就给我们留下了“随机的贡献者意见”,我不相信这些意见能在这方面指导我。(每个人在阅读代码时的心理过程都是不同的…)

  • 一句话:没什么


    根据实际情况,由您决定您认为哪个更具可读性/可维护性。但是:

    • 我建议你在选择上保持一致

    • 如果您的API可能被其他人使用/维护,最好与他们讨论。与同事达成共识将是一件好事,甚至是“同意不同意”,然后继续前进


    但不要挂断,因为这肯定是个小问题。

    创建一个界面,并为所有内容提供一个
    默认值
    空正文。。。然后,您只需要重写应该执行任何操作的方法。这与性能无关,只与开发人员的效率有关。嵌套接口是静态的。没有“内部接口”这样的东西。创建一个接口并为所有内容提供一个
    默认值
    空主体。。。然后,您只需要重写应该执行任何操作的方法。这与性能无关,只与开发人员的效率有关。嵌套接口是静态的。没有所谓的“内部接口”。
    
    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);
                }
    }
    
    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);
        }
    }