【发布时间】:2018-05-25 11:25:33
【问题描述】:
您好,我有一个相当复杂的应用程序,需要在 Android 中对“Activity”、“Service”和“FragmentActivity”进行子类化(但这个问题在纯 Java 中仍然有效)
三个类中的每一个都在“我的层”中使用一组实用程序进行扩展,例如显示 Toast 的特定方式或处理配置或读取磁盘上的文件等的特定方式。
现在我为所有 3 种类型的类创建了一个通用的界面(MyUtilities),例如
public class MyActivity extends Activity implements MyUtilities
public class MyFragmentActivity extends FragmentActivity implements MyUtilities
public class MyService extends Service implements MyUtilities
public class MyActivity1 extends MyActivity
public class MyFragmentActivity1 extends MyFragmentActivity
public class MyService1 extends MyService
但这使我最终复制和粘贴所有 3 个类的常用方法,因为我无法在接口中定义字段和方法。有没有更好的方法来做到这一点?从长远来看,复制代码极易出错。
我查看了抽象类,但不确定在这种情况下如何使用它们。理想情况下,我需要像“双重扩展”这样的
public class MyActivity extends Activity, MyUtilities
这显然是不允许的,但可以解决我的问题。
请给点意见?
谢谢!
PS:我已经尽可能在公共类上使用静态方法
根据要求,这里有一个简单的例子。 3 个对象中的每一个都需要能够支持一个配置字段,并且每个对象都包含以下内容
private Configuration config
public Configuration getConfiguration(){return config;}
public void setConfiguration(Configuration cfg){this.config=cfg;}
使用接口有助于要求方法存在,但我仍然需要复制和粘贴我不太喜欢的代码。
【问题讨论】:
-
请分享更多代码,答案只是在分离类的方法中提取逻辑。但是,为了获得更好的帮助,请分享您的代码。
-
谢谢,我在正文中添加了一个简单的例子
标签: java android interface abstract-class subclassing