在 Java 中,未使用的导入声明会占用内存吗?
2022-09-01 10:25:59
未使用的导入是否像这样 - 导入android.widget.RelativeLayout;吃掉内存?只是想知道它有多大或只是有价值?也许这是愚蠢的问题,但我还没有找到答案。
未使用的导入是否像这样 - 导入android.widget.RelativeLayout;吃掉内存?只是想知道它有多大或只是有价值?也许这是愚蠢的问题,但我还没有找到答案。
不,它们不会占用任何内存。编译器仅使用导入在编译时解析类名。
编译器将每个类名更改为完全限定名。并删除导入语句。因此,import 语句不会转换为字节码。
通配符导入可以提出的唯一问题是命名空间冲突,即,当在两个不同的包中定义了两个具有相同名称的类型时,使用通配符导入这些包将导致所用类型的名称冲突。
若要查看编译器如何替换 import 语句,可以使用命令生成类的字节代码。请考虑以下代码:javap
import java.util.*;
import java.util.regex.*;
public class Test {
public static void main(String[] args) {
}
}
只需编译上面的代码,并使用以下命令检查字节码:
javap Test
它给出以下输出:
public class Test {
public Test();
public static void main(java.lang.String[]);
}
因此,您可以看到该类型被替换为它的完全限定名 ,并且字节码中没有导入语句。String
java.lang.String
否,编译器会在编译后删除它们。但你可能面临的两个问题