以下是可能的:
1)在某处我定义了类似的内容:
private static enum MODE
{
ANDROID,
HOLO_EVERYWHERE
}
public static final MODE = MODE.ANDROID;
2)使用这个定义并制作一些CUSTOM代码,如下面的(或者类似的,或者只是其他方式,这个代码只是一个例子来展示我想要的......像C中的#ifdef
... 。):
if (MODE == MODE.ANDROID)
include android.app.Activity as ACTIVITY;
else
include com.WazaBe.HoloEverywhere.sherlock.SActivity as ACTIIVTIY;
public ExtendedActivity extends ACTIVITY
{
public ExtendedActivity()
{
if (MODE == MODE.ANDROID)
this.callFunction1();
else
this.callFunction2();
}
}
编辑
我的目标是:
我不想包装这两个类,因为我希望我的库在没有安装其他库(如HoloEverywhere库)的情况下工作...我不希望我的库的用户改变我的代码或包含HoloLibrary ......
我希望他能够设置使用哪个基类,就是这样......
答案 0 :(得分:2)
是的,可以这样做,但不能在班级成员之外。 但是不可能投一个扩展的类1.在它之外,2。在运行程序之前必须注册类成员,而这是不可能的。
public ExtendedActivity extends ACTIVITY
{
public ExtendedActivity()
{
if (MODE == MODE.ANDROID) {
include android.app.Activity;
this.callFunction1();
}
else {
include com.WazaBe.HoloEverywhere.sherlock.SActivity;
this.callFunction2();
}
}
}
否则你可以使用Reflections来解决这个问题。 另见:http://docs.oracle.com/javase/tutorial/reflect/
答案 1 :(得分:0)
您可以进行2项活动(针对单个活动扩展2个不同的类别),并可以有条件地启动这些活动。
if (MODE == MODE.ANDROID)
startActivity(A)
else
startActivity(B)
但你的发射器活动必须是一个,不能以这种方式设计。
我想知道你为什么要这样做?