System.getProperty(“java.version”)与Class.forName回退
获取Java版本有不同的方法。一个是查看系统属性,但另一个是查看可用类System.getProperty(“java.version”)与Class.forName回退,java,Java,获取Java版本有不同的方法。一个是查看系统属性,但另一个是查看可用类 try { // 1.0 version = 10; Class.forName("java.lang.Void"); // 1.1
try {
// 1.0
version = 10;
Class.forName("java.lang.Void");
// 1.1
version++;
Class.forName("java.lang.ThreadLocal");
// 1.2
version++;
Class.forName("java.lang.StrictMath");
// 1.3
version++;
Class.forName("java.lang.CharSequence");
//1.4
version++;
Class.forName("java.net.Proxy");
// 1.5
version++;
Class.forName("java.net.CookieStore");
// 1.6
version++;
Class.forName("java.nio.file.FileSystem");
// 1.7
version++;
Class.forName("java.lang.reflect.Executable");
// 1.8
version++;
} catch (Throwable t) {
}
我对彼此之间的效率感兴趣。有人能评论吗
我对彼此之间的效率感兴趣。有人能评论吗
当然,直接读取属性更快、更直接且自我维护在实践中,第二种方法根本不“有效”。如果您从属性中找到版本,请使用它。System.getProperty执行权限检查,但是Class.forName是直接的本机方法调用。你能解释一下这两种方法的机制吗?类路径扫描和加载以及基于异常的决策比检查权限要昂贵,我认为,你可以对其进行基准测试