代码之家  ›  专栏  ›  技术社区  ›  Pops Atula

在Java中用默认包导入类的语法是什么?[复制品]

  •  49
  • Pops Atula  · 技术社区  · 16 年前

    这个问题已经有了答案:

    是否可以在Java中导入默认包中的类?如果是,语法是什么?例如,如果你有

    package foo.bar;
    
    public class SomeClass {
        // ...
    

    在一个文件中,您可以写入

    package baz.fonz;
    
    import foo.bar.SomeClass;
    
    public class AnotherClass {
        SomeClass sc = new SomeClass();
        // ...
    

    在另一个文件中。但是如果someclass.java不包含包声明呢?你怎么说 SomeClass 在里面 AnotherClass ?

    5 回复  |  直到 7 年前
        1
  •  96
  •   Dan Dyer    16 年前

    不能从默认包导入类。除了非常小的示例程序之外,您应该避免使用默认包。

    Java language specification :

    这是一个汇编 从中导入类型的时间错误 未命名的包。

        2
  •  31
  •   Dan    16 年前

    访问默认包中的类的唯一方法是从默认包中的另一个类。那样的话,别费心了 import 它,直接参考它。

        3
  •  12
  •   OscarRyz    16 年前

    那是不可能的。

    另一种选择是使用反射:

     Class.forName("SomeClass").getMethod("someMethod").invoke(null);
    
        4
  •  3
  •   Pierre Fourgeaud    12 年前

    这根本不是编译错误!只能将默认包导入默认包类。

    如果您为另一个包这样做,那么它将是一个编译错误。

        5
  •  1
  •   Rob H    16 年前

    正如其他人所说,这是一个糟糕的实践,但是如果您因为需要与使用默认包的第三方库集成而没有选择,那么您可以在默认包中创建自己的类并以这种方式访问其他类。默认包中的类基本上共享一个名称空间,因此您可以访问另一个类,即使它位于单独的JAR文件中。只需确保jar文件在类路径中。

    如果您的类不在默认包中,则此技巧不起作用。