van*_*ane 11 java inheritance android
这个问题与Android有关,因为我的需求存在于该域中,但问题仍然适用于整个Java; 我将在这里使用了一些Android的术语,如Activity,FragmentActivity,ListActivity,等...
我需要实现一个抽象基类,其中包含必须在整个应用程序中Activity使用的功能,更具体地说,每个必须使用此功能,但我希望它由基类自动处理.我的问题是,我有类似的应用程序内的许多不同类型的活动Activity,FragmentActivity并且ListActivity,所有这些都延长Activity(减去Activity当然).
由于基类中的代码对于每个实现都是完全相同的Activity,有没有办法避免代码重复并且需要为每种类型创建基类Activity?
我想避免的:
public abstract class BaseActivity extends Activity
{
public void onCreate(Bundle savedBundle)
{
// code goes here, will be the exact same for all these base classes
}
}
public abstract class BaseFragmentActivity extends FragmentActivity
{
public void onCreate(Bundle savedBundle)
{
// code goes here, will be the exact same for all these base classes
}
}
public abstract class BaseListActivity extends ListActivity
{
public void onCreate(Bundle savedBundle)
{
// code goes here, will be the exact same for all these base classes
}
}
public class MyMainActivity extends BaseActivity
{
}
public class MyUserList extends BaseListActivity
{
}
public class SomeActivityThatNeedsToBeAFragment extends BaseFragmentActivity
{
}
Run Code Online (Sandbox Code Playgroud)
我试图通过使用类似下面的东西来利用泛型
public abstract class BaseActivity<T extends Activity> extends T
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用; 或者我可能只是做错了.那么有没有办法完成这个代码重用并避免重复,或者我只是简单地卡住复制我的代码?
谢谢!
通常,使用 Fragments 可以帮助解决此类问题。在您的特定情况下,尽管我看到您也想使用 ListActivity。这让事情变得更加困难
如您所知,Java 在这方面无法帮助您。您不能继承多个实现(List 和 MyBase)。没有简单的答案。我可以建议两件事:
List(Activity,Fragment) 是对其基类的非常简单的扩展。您可以通过合理的工作量来构建自己的、从基类继承的。它们可能比框架中的更简单。也许这样就可以了。
代表。编写一个实现常见行为但不继承自 Activity/Fragment 的类。在片段/活动类初始化期间创建这些对象之一。只要有共同行为,就将其委托给委托实例。
| 归档时间: |
|
| 查看次数: |
1520 次 |
| 最近记录: |