Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
System.getProperty(“java.version”)与Class.forName回退_Java - Fatal编程技术网

System.getProperty(“java.version”)与Class.forName回退

System.getProperty(“java.version”)与Class.forName回退,java,Java,获取Java版本有不同的方法。一个是查看系统属性,但另一个是查看可用类 try { // 1.0 version = 10; Class.forName("java.lang.Void"); // 1.1

获取Java版本有不同的方法。一个是查看系统属性,但另一个是查看可用类

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是直接的本机方法调用。你能解释一下这两种方法的机制吗?类路径扫描和加载以及基于异常的决策比检查权限要昂贵,我认为,你可以对其进行基准测试