是否有可能使用JDK (1.7)中的类而不是Android (ADK,API 23)?
我需要使用的类存在于Android (API 23) 和JDK (1.7)中的中。默认情况下,使用ADK中的类。但是,我想使用JDK中的类。
在我的例子中,我想使用DatatypeFactory.newInstance(factoryClassName, classLoader),它放在JDK和ADK中的包javax.xml.datatype中。由于实现上的差异,我希望使用来自JDK的类,而不是ADK。
如何使用来自JDK的类而不是ADK的类?
发布于 2016-03-11 09:32:26
你不能那样做。无论如何,不要简单地切换导入语句。在作为目标平台的Android上运行的代码将无法访问Java类,因此代码将无法加载类,或者它将以完全限定的名称加载这个类的Android版本(这就是您的情况)。
如果您希望使用Java中的特定实现,则必须在目标平台上提供该实现。
你有两个选择,但两者都不是好的:
使用Java作为库
通过将rt.jar(~50 By )引入您的项目。然而,这将产生许多潜在的问题,因为Android和Java镜像了一些包和类,最终可能会加载错误的版本。
或
把源头带进来
第二个选择--只是稍微好一点--是将该类的源代码引入到您的项目中,前提是它的所有依赖项都可以由Android满足,或者也可以作为源代码引入。这会很痛苦..。
然而,正确的解决办法是
拥抱生态系统
我不知道您的具体需求是什么,但我敢打赌Android实现这个类非常接近Java。如果您不能通过使用Android来实现某件事情,那么在这里尝试询问这个特定的问题,或者搜索可以实现的第三方库,您需要什么。也许解决办法比你想象的要容易。
https://stackoverflow.com/questions/35935866
复制相似问题