有人说没有用到的 import 语句会被忽略,真的这样吗?

Posted 石头StoneWang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有人说没有用到的 import 语句会被忽略,真的这样吗?相关的知识,希望对你有一定的参考价值。

背景

有人说没有用到的 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语句就认为编译的过程其不起作用。

以上是关于有人说没有用到的 import 语句会被忽略,真的这样吗?的主要内容,如果未能解决你的问题,请参考以下文章

Vscode清除没有用到的import语句

标头位置不起作用 - 但肯定会被忽略

Effective JavaScript Item 63 注意异步调用中可能会被忽略的异常

哈希机制真的安全吗?

很多人都说测试会被开发给取代,这是真的吗?

在 Java 中的 Import 语句中使用 * [重复]