简单的问题,但即使谷歌搜索了很多,我也找不到答案。
是否可以在包外导入类?
假设我有 2 个文件夹A
,每个文件夹B
都有一个.java
文件,是否可以通过使用子句import
导入包含在中的类A
?import A.Aclass
? 或者只要有关键字就必须使用包语法import
?
是的,可以使用 import 语句导入类。为了更好地理解,我们假设您有三个文件夹foldera
,其中包含一个名为“”的 .java 文件,包含另一个名为“ ”的 .java 文件,folderb
以及一个名为“”的 .java 文件。现在,如果要使用“ ”中“ ”的成员数据和操作,可以使用如下所示的语句:folderc
foldera
ClassA.java
folderb
ClassB.java
folderc
ClassC.java
ClassA.java
ClassC.java
import
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
.
希望现在你对这个概念很清楚!谢谢...
好吧,如果该类被定义为具有 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 的类,则将选择类路径中的第一个。
请记住,命名包的约定是使用小写字母和类——名称应该以类名中每个单词的大写字母开头。
对的,这是可能的。
如果您有以下情况:
包装:PackA
类别:A类
做:
导入PackA.ClassA;//导入类
或者
导入PackA.*;//导入包内的所有类
是的,您必须使用包语法。
导入文件夹内的所有类A
。
import com.pack.A.*;
在文件夹中导入特定的类A
。
import com.pack.ClassName;
是的,可以只导入包
句法
import pck.ClassA or import pck.*