我正在阅读有关预定义方法的内容,并且正在学习导入语句。我已经看过并经常使用这些来使用某些预定义的方法,但我总是把它们放在程序的最开头。我的问题是,这些是否可以放在某个代码块中,以便只在该块中看到它?我不确定是否真的有这个原因,大多只是好奇。
答案 0 :(得分:4)
java文件包含三个部分:
并且它也必须按此顺序排列,如果不按此顺序,您将收到编译错误
答案 1 :(得分:2)
不,您需要在class
/ interface
之前,在package
声明之后定义它。
因此,整个.class
文件始终可以看到导入。
import
允许您使用除本地包之外的其他包的成员,而无需指定类的全名(例如,您需要导入java.util.List
,或者您需要在任何地方使用它的全名)。
Oracle有一个tutorial on using package members。
.class
- 文件中的顺序为defined:
package
规范(可选)import
陈述class
/ interface
/ enum
定义答案 2 :(得分:0)
我的猜测是会给你编译错误。但是,如果在实例化时指定类的完整包名,则可以有效地实现相同的功能。
E.g:
public String getString() {
return new com.package.some.Class("hello world").toString();
}
在这种情况下,您不需要在类的顶部有一个'import'指令,因为您告诉方法内部的编译器您所需的类位于com.package.some包中,并且class被称为Class。
这实际上是在野外发生的,例如你必须在具有相同名称的不同包中的类。您只能导入其中一个,另一个必须在代码中内联包定义。
import com.package.some.Class;
public class Yolo {
private Class classA;
private com.package.other.Class classB;
public Yolo(Class classA, com.package.other.Class classB) {
this.classA = classA;
this.classB = classB;
}
}
你不能只导入两个'Class'对象并将它们称为Class,因为编译器不会知道哪一个。所以,这是一个有效的情况,你会发现这种事情真的发生了。
答案 3 :(得分:0)
来自Oracle Docs:
导入包裹成员
要将特定成员导入当前文件,请进行导入 在任何类型定义之前的文件开头的语句,但 在package语句之后,如果有的话。这是你的意思 从中创建的图形包导入Rectangle类 上一节。