Java导入语句

时间:2016-01-08 21:04:56

标签: java

我正在阅读有关预定义方法的内容,并且正在学习导入语句。我已经看过并经常使用这些来使用某些预定义的方法,但我总是把它们放在程序的最开头。我的问题是,这些是否可以放在某个代码块中,以便只在该块中看到它?我不确定是否真的有这个原因,大多只是好奇。

4 个答案:

答案 0 :(得分:4)

java文件包含三个部分:

  1. 包装定义
  2. 导入定义(可选)
  3. 类(或接口/枚举)定义。
  4. 并且它也必须按此顺序排列,如果不按此顺序,您将收到编译错误

答案 1 :(得分:2)

不,您需要在class / interface之前,在package声明之后定义它。

因此,整个.class文件始终可以看到导入。

import允许您使用除本地包之外的其他包的成员,而无需指定类的全名(例如,您需要导入java.util.List,或者您需要在任何地方使用它的全名)。

Oracle有一个tutorial on using package members

.class - 文件中的顺序为defined

  1. package规范(可选)
  2. import陈述
  3. 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类   上一节。