当前位置: 首页 > 知识库问答 >
问题:

在Java中使用完全限定名和导入的区别

卫乐童
2023-03-14
chooser.setCurrentDirectory(new java.io.File("."));
import java.io.File;
...
   chooser.setCurrentDirectory(new File("."));

共有1个答案

公羊光明
2023-03-14

你应该关注的主要事情是可读性。我觉得第二个更有可读性。

在极少数情况下,我更喜欢第二种方法。让我们考虑以下场景:出于某种原因,我编写了一个类,并将其命名为file。我输入了file file=new file(...),我的IDE为我自动导入了java.io.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
}
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
}
 类似资料:
  • 案例1。类扩展了java。util。阵列列表{ { } } 这里我得到一个compiletime错误,表示找不到符号 案例2。类扩展了java。util。阵列列表 { } 这个正在成功编译。 那么扩展ArrayList类有什么必要呢?如果我们不能利用它(如案例1)

  • 我正在测试上面的代码。两者给我的结果是一样的。我正试图理解第1、2和6行之间的区别。我可以通过这两种方法获得相同的结果。

  • 编辑: 编辑:实际上我使用的是Java7(我认为Java8正在运行),但它不是

  • 所以我试着在我的Mac上的终端上运行这个。我的文件路径是/users/admin/documents/java/java24/com/java24hours 我尝试在java24hours目录“java saluton.java”中运行,并返回一个“error:Could not find或load main class saluton.java” 据我所知,这与包裹有关。我研究了包名,但不明白完

  • 问题内容: 在SQL Server中使用完全限定的表名是否会对性能产生影响? 我有一个查询,在这里我要连接不同数据库中的两个表。DBA建议在主机查询中省略数据库名称,我猜这是出于性能或惯例的考虑。 所有表完全合格 首选? 这实际上有区别吗? 问题答案: 通常最好使用完全限定的名称,但要考虑一些注意事项。我会说这在很大程度上取决于要求,并且一个答案可能无法满足所有情况。 请注意,这只是一个编译绑定,

  • 如何有效地获得简短的完全限定类名。例如,如果我们通过了“com.test.student”,我们需要得到“c.t.student”。