4

简单的问题,但即使谷歌搜索了很多,我也找不到答案。

是否可以在包外导入类?

假设我有 2 个文件夹A,每个文件夹B都有一个.java文件,是否可以通过使用子句import导入包含在中的类Aimport A.Aclass? 或者只要有关键字就必须使用包语法import

4

5 回答 5

2

是的,可以使用 import 语句导入类。为了更好地理解,我们假设您有三个文件夹foldera,其中包含一个名为“”的 .java 文件,包含另一个名为“ ”的 .java 文件,folderb以及一个名为“”的 .java 文件。现在,如果要使用“ ”中“ ”的成员数据和操作,可以使用如下所示的语句:foldercfolderaClassA.javafolderbClassB.javafoldercClassC.javaClassA.javaClassC.javaimport

import foldera.ClassA

如果要在“ClassC.java”中使用“ClassB.java”的成员数据和操作,也可以使用import语句

import folderb.ClassB

根据 java 源文件声明规则,如果类是包的一部分,则该package语句必须是源代码文件中的第一行,在import可能存在的任何语句之前。在这个例子中,源文件的第一行"ClassC.java"必须是package folderc因为它位于folderc. 同样,源文件的第一行"ClassA.java"必须是package foldera,源文件的第一行"ClassB.java"必须是package folderb.

希望现在你对这个概念很清楚!谢谢...

于 2013-02-26T14:55:15.390 回答
1

好吧,如果该类被定义为具有 apackage a;那么您需要使用包名导入该类。如果您有两个包含同名类的包,那么在需要调用它们的类中,您将需要使用完全限定的名称。例如:

import a.Foo;
import b.Foo;

public class Bar
{

    public static void main(String[] args)
    {
        a.Foo aFoo = new a.Foo();
        b.Foo bFoo = new b.Foo();
    }
}

或者,如果您有两个具有相同名称的类的包,您可以简单地跳过导入它们,而是使用它们的完全限定名称 (FQN-s)。

如果该类没有package ...;,则只需将其导入为:

import Foo;

但是,如果您有两个包(来自不同的库),其中包含具有相同 FQN-s 的类,则将选择类路径中的第一个。

请记住,命名包的约定是使用小写字母和类——名称应该以类名中每个单词的大写字母开头。

于 2013-02-26T14:33:28.480 回答
0

对的,这是可能的。

如果您有以下情况:

包装:PackA

类别:A类

做:

导入PackA.ClassA;//导入类

或者

导入PackA.*;//导入包内的所有类

于 2013-02-26T14:31:36.843 回答
0

是的,您必须使用包语法。

  • 导入文件夹内的所有类A

    import com.pack.A.*;
    
  • 在文件夹中导入特定的类A

    import com.pack.ClassName;
    
于 2013-02-26T14:34:47.080 回答
0

是的,可以只导入包

句法

import pck.ClassA or import pck.* 
于 2013-02-26T14:35:16.363 回答