ugu*_*kan 7 java import inline
使用"内联导入"(完全限定名称)和Java中的性能,内存,编译时间等方面的正常导入是否存在差异?
chooser.setCurrentDirectory(new java.io.File("."));
Run Code Online (Sandbox Code Playgroud)
和
import java.io.File;
...
chooser.setCurrentDirectory(new File("."));
Run Code Online (Sandbox Code Playgroud)
你应该关注的主要是可读性.我发现第二个更具可读性.
在极少数情况下,我更喜欢第二种方法.让我们考虑以下场景:出于某种原因,我写了一个类并命名它File.我打字File file = new File(...),我的IDE自动导入了java.io.File我.但我不想要那种对象,我想要我的 File课.因此,我更喜欢内联导入它,而不是导入正确的类,只是其他用户不会与Java的File类混淆.
关于性能,它们完全相同,这是证明 -
这是为第一个片段生成的字节码:
public class java8.tests.General {
public java8.tests.General();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #2 // class javax/swing/JFileChooser
3: dup
4: invokespecial #3 // Method javax/swing/JFileChooser."<init>":()V
7: astore_1
8: aload_1
9: new #4 // class java/io/File
12: dup
13: ldc #5 // String .
15: invokespecial #6 // Method java/io/File."<init>":(Ljava/lang/String;)V
18: invokevirtual #7 // Method javax/swing/JFileChooser.setCurrentDirectory:(Ljava/io/File;)V
21: return
}
Run Code Online (Sandbox Code Playgroud)
这是第二个的字节码:
public class java8.tests.General {
public java8.tests.General();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #2 // class javax/swing/JFileChooser
3: dup
4: invokespecial #3 // Method javax/swing/JFileChooser."<init>":()V
7: astore_1
8: aload_1
9: new #4 // class java/io/File
12: dup
13: ldc #5 // String .
15: invokespecial #6 // Method java/io/File."<init>":(Ljava/lang/String;)V
18: invokevirtual #7 // Method javax/swing/JFileChooser.setCurrentDirectory:(Ljava/io/File;)V
21: return
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1844 次 |
| 最近记录: |