java - 性能:内部接口与单独的接口类
问题描述
在我的 android 项目中,我使用 4Recyclerviews
中的 4 种不同的方法,Activities
我需要 3 种方法onClick
,onButtonClick
并且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);
}
}
解决方案
您可以创建一个适配器类并为接口中声明的所有方法提供空实现,这将减少重复的代码行,然后对其进行扩展。(尽管不确定这是否是 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);
}
}
推荐阅读
- validation - 如果字段隐藏在 ASP.NET MVC 5 中,则忽略必填字段
- postgresql - JPA + Hibernate + PostgreSQL - Left Join 和 Group By
- python - Python Selenium - 'dict' 对象不可调用 - 单击元素列表
- amazon-web-services - 为 aws cognito id 令牌生成基于角色的声明
- node.js - Step Functions 错误处理函数参数
- powershell - 在所有驱动器中查找特定文件并使用其路径
- python - 我应该命名 for 循环的 i 变量部分吗?
- django - 如何要求用户在 django 中登录
- javascript - 如何从地图中删除前一个圆圈?
- memory - FreeRTOS 堆放置在 DDR 的哪个内存区域(Zynq 700 器件)?