Ken*_*iro 27 java import performance
像这样的未使用的导入 - 导入android.widget.RelativeLayout; 吃内存?只是想知道它有多少或只是有价值?也许这是一个愚蠢的问题,但我还没有找到答案.
Roh*_*ain 46
不,他们不记忆.编译器仅使用导入来在编译时解析类名.
编译器将每个类名更改为完全限定名.并删除import语句.因此,import语句不会使其成为字节代码.
可以提出通配符导入的唯一问题是命名空间冲突,即,当在两个不同的包中定义两个具有相同名称的类型时,使用通配符导入这些包将导致所使用的类型的名称冲突.
要查看编译器如何替换import语句,可以使用javap命令生成类的字节代码.考虑以下代码:
import java.util.*;
import java.util.regex.*;
public class Test {
public static void main(String[] args) {
}
}
Run Code Online (Sandbox Code Playgroud)
只需编译上面的代码,并使用以下命令检查字节代码:
javap Test
Run Code Online (Sandbox Code Playgroud)
它给出了以下输出:
public class Test {
public Test();
public static void main(java.lang.String[]);
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以看到该String类型被替换为完全限定名称java.lang.String,并且字节代码中没有import语句.
| 归档时间: |
|
| 查看次数: |
6754 次 |
| 最近记录: |