我有以下问题: 我有一个类common.java,它将由Android应用程序使用,但也由Java应用程序使用。 这个类导入一个特定于android的类(android。*)。
如果我想构建Java应用程序,它当然会抛出不存在导入的错误。 我以编程方式在if子句中执行所有Android特定的东西:
if (System.getProperty("java.vm.name").equalsIgnoreCase("Dalvik")) {
//Android specific stuff
}
所以:有没有办法,只有当我构建Android应用程序时,我才能导入Android类?就像围绕导入的if子句一样?
if(System.getProperty("java.vm.name").equalsIgnoreCase("Dalvik")) {
import ...
import ...
}
希望我的问题很清楚。谢谢!
答案 0 :(得分:1)
你必须将common分裂成便携式和特定于os的代码,如下所示:
// has no android or j2se specific code
public class common {
public void someCommonfunction() {...someOsSpecificcode(); ...}
protected abstract void someOsSpecificcode();
}
// has android specific code
public class commonAndroid extends common {
protected void someOsSpecificcode() { /* android specific implementation */ }
}
// has j2se specific code
public class commonJ2se extends common {
protected void someOsSpecificcode() { /* j2se specific implementation */ }
}