Java AndroidStudio/gradle-如何加载Dalvik类而不是标准JDK类
我在android中摆弄HTTPS,我不得不处理java.net.InetAddress。在这样做的过程中,我发现dalvik的InetAddress类有一个名为isNumeric(host)的静态方法,它不在java8 InetAddress类中。作为说明,官方文件没有显示它,所以我想我甚至不应该使用它Java AndroidStudio/gradle-如何加载Dalvik类而不是标准JDK类,java,android,android-studio,classloader,android-gradle-plugin,Java,Android,Android Studio,Classloader,Android Gradle Plugin,我在android中摆弄HTTPS,我不得不处理java.net.InetAddress。在这样做的过程中,我发现dalvik的InetAddress类有一个名为isNumeric(host)的静态方法,它不在java8 InetAddress类中。作为说明,官方文件没有显示它,所以我想我甚至不应该使用它 那么,假设我想在我的android代码中使用InetAddress.isNumeric,如何让AndroidStudio/gradle加载Dalvik类而不是JDK类并避免编译错误?正如Com
那么,假设我想在我的android代码中使用InetAddress.isNumeric,如何让AndroidStudio/gradle加载Dalvik类而不是JDK类并避免编译错误?正如CommonWare所指出的,isNumeric方法通过@hide javadoc注释隐藏,因此编译器不可见。
有几种方法可以调用该方法,但您不应该:)。Android Studio和Gradle不“加载Dalvik类”或“JDK类”。Android构建过程使用基于特定构建SDK的
Android.jar
文件(例如,build.gradle
中的compileSdkVersion
。感谢您的评论,但我的意思是:如何确保gradle从Dalvik而不是JDK加载java.net.InetAddress?据我所知,java类加载程序加载在路径右侧找到的类的第一个版本?“如何确保gradle从Dalvik而不是JDK加载java.net.InetAddress?"--正如我在评论中指出的那样,Gradle不使用这两种方法。由于Gradle加载android.jar,并且InetAddress同时出现在android.jar和rt.jar中,jvm将首先加载哪一种方法?正如我已经指出的,Gradle for android将根据与构建SDK关联的android.jar
进行编译。Gradle for android不使用任何rt、 jar
用于Android编译过程。您尝试使用的方法用@hide
注释标记,因此它不存在于开发机器上的Android.jar
副本中。