使用JDK中的类而不是Android SDK(ADK)中的类

3

是否有可能使用JDK(1.7)中的类,而不是Android SDK(ADK,API 23)中的类?

我需要使用的一个类存在于Android SDK(API 23)和JDK(1.7)中。默认情况下,将使用ADK中的类。但是我想使用JDK中的类。

在我的情况下,我想要使用在JDK和ADK中都位于javax.xml.datatype包中的DatatypeFactory.newInstance(factoryClassName,classLoader)。由于实现上的差异,我希望使用来自JDK而不是ADK的类。

如何使用JDK中的类而不是ADK中的类?

1个回答

3
你不能这样做。仅仅通过切换导入语句是不行的。你的代码在Android中作为目标平台运行时将无法访问Java SDK类,因此代码将无法加载类或者它会加载与完全限定名称相同的类的Android版本(这是你的情况)。
如果您想使用Java SDK中的特定实现,您需要在目标平台上使其可用。
您有2个选择,但都不好:使用Java SDK作为库,通过将rt.jar(~50MB)引入到你的项目中。然而,这可能会创建许多潜在的问题,因为Android SDK和Java SDK镜像一些包和类,你可能会加载错误的版本。或者把源代码带进来,第二个选项——稍微好一点,只是将该类的源代码带进你的项目,前提是所有依赖项都可以通过Android SDK满足,或者也可以作为源代码带进来。这将是痛苦的…
然而,正确的解决方法是拥抱生态系统。
我不知道您的具体要求,但我敢打赌,Android对这个类的实现非常接近Java。如果您无法通过使用Android SDK实现某些功能,请尝试在这里询问有关特定问题,或搜索第三方库,这些库可以实现您需要的功能。也许解决方案比您想象的要简单。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接