如何在不同的类之间共享代码?

时间:2017-12-11 21:05:41

标签: java android interface abstract-class subclassing

您好我有相当复杂的应用程序需要子类化"活动","服务"和#34; FragmentActivity"在Android中(但这个问题在纯Java中仍然有效)

enter image description here

这三个类中的每一个都在" My Layer"中扩展了一组实用程序。例如显示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;}

使用界面有助于要求方法存在,但我仍然需要复制和粘贴我不太喜欢的代码。

1 个答案:

答案 0 :(得分:0)

看看这种方法:

我们的想法是创建一个Custom Activity类,它将扩展Activity并实现MyUtilities接口。这样,Android图层就会将您的自定义类理解为活动,将您的图层理解为MyActivity以及MyUtilities

public class CustomActivity extends Activity implements MyUtilities {
   private Configuration config

   public Configuration getConfiguration(){return config;}

   public void setConfiguration(Configuration cfg){this.config=cfg;}
}

Android Layer会将班级MyActivity的实例理解为Activity

您的图层会将MyActivity类的实例理解为CustomActivity以及MyUtilities。

public class MyActivity extends CustomActivity {

}

希望这有帮助!