背景
有人说没有用到的 import 语句会被忽略,真的这样吗? 本工程寻求真相
结论
- 没有用的 import 语句,在编译过程不会被忽略,比如把
java.util.List
改成java.util.List2
就会编译失败 - 假设有
java.util.List
这个没用到的语句,编译出来的class 再反编译回java,会看到这个语句没有了
这个仅仅说明反编译转件会把没有用的import 语句在反编译的时候没有体现出来。不能说明多余的import语句在编译过程会被忽略,实际我长久以来的经验认为是不会被忽略的,况且前面已经证明了故意写错的、多余的 import 语句会在编译过程抛出错误,足以证明 “多余import语句不会在编译过程被忽略”
测试用的代码
package com.wyf.test;
import java.util.List;// 没用到的import
public class Hello {
public static void main(String[] args) {
System.out.println("Hello");
}
}
思考
如果要进一步分析,可以 javap -v -p 分析其字节码。我看到的有 import java.util.List;
和没有是完全一样的结果。
但是这并不动摇结论,无用的import语句影响了编译能不能成功,你并不能反编译后看到没有了import语句就认为编译的过程其不起作用。