简单的问题,但即使用谷歌搜索了很多我也找不到答案。
是否可以在包外导入类?
假设我有2个文件夹A
和B
,每个文件夹中都有.java
个文件,是否可以使用import
子句导入A
中包含的类{1}}? import A.Aclass
?或者只要有关键字import
,就必须使用包语法?
答案 0 :(得分:2)
是的,可以使用import语句导入该类。为了更好地理解,我们假设您有三个文件夹foldera
,folderb
和folderc
,其中foldera
包含名为“ClassA.java
”的.java文件,{{1包含另一个名为“folderb
”的.java文件,ClassB.java
包含一个名为“folderc
”的.java文件。现在,如果您想在“ClassC.java
”中使用“ClassA.java
”的成员数据和操作,则可以使用ClassC.java
语句,如下所示:
import
如果您想使用会员数据& “ClassC.java”中“ClassB.java”的操作也可以使用import语句
import foldera.ClassA
根据java源文件声明规则,如果类是包的一部分,import folderb.ClassB
语句必须是源代码文件中的第一行,在任何package
语句之前出席。在此示例中,import
源文件的第一行必须为"ClassC.java"
,因为它位于package folderc
中。同样,folderc
源文件的第一行必须为"ClassA.java"
,package foldera
源文件的第一行必须为"ClassB.java"
。
希望你现在明白这个概念! 谢谢......
答案 1 :(得分:1)
好吧,如果该类被定义为具有package 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的类的包(来自不同的库),那么将选择类路径中的第一个包。
请注意,命名包的约定是使用小写字母和类 - 名称应以类名称中每个单词的大写字母开头。
答案 2 :(得分:0)
是的,这是可能的。
如果您有以下内容:
包装:PackA
课程:ClasA
执行:
导入PackA.ClassA; //导入类
OR
导入PackA。*; //导入包中的所有类
答案 3 :(得分:0)
是的,您必须使用包语法。
导入文件夹A
内的所有课程。
import com.pack.A.*;
导入文件夹A
内的特定类。
import com.pack.ClassName;
答案 4 :(得分:0)
是的,可以导入包
语法
import pck.ClassA or import pck.*