我正在阅读有关预定义的方法并正在了解导入语句。我已经看到并经常使用这些方法来使用某些预定义的方法,但我总是将它们放在程序的开头。我的问题是,这些可以放在一个特定的代码块中,以便它只能在该块中看到吗?我不确定会有真正的原因,主要是好奇。Java导入语句
Java导入语句
回答
不,您需要在package
声明之后的class
/interface
之前定义它。
因此,导入对于整个.class
文件总是可见的。没有指定类的全名(例如,您需要导入java.util.List
,或者您需要在任何地方都使用它的全名),您可以使用除本地包以外的其他包的成员,而不指定类的全名。
Oracle有一个tutorial on using package members。
在.class
-file顺序是defined为:
package
规范(可选)import
语句class
/interface
/enum
定义
值得注意的是''java.lang。*'会自动导入 –
@ cricket_007 true,我将它改为'java.util.List' :) –
[JLS specification here](https://docs.oracle.com/ javase/specs/jls/se7/html/jls-7.html#jls-7.3) –
java文件包含三个零件:
- 包定义
- 进口定义(可选)
- 的类(或接口/枚举)定义。
,它也必须是这个顺序,你会得到编译错误,如果它不是顺序
我的猜测是,会给你一个编译器错误。但是,如果您在实例化类时指定了类的完整软件包名称,则可以有效地实现相同的功能。
如:
public String getString() {
return new com.package.some.Class("hello world").toString();
}
在这种情况下,你不需要在类的顶部有一个“进口”指令,因为你是在告诉你想要的类所在的方法中,编译器在com.package.some包中,该类称为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,因为编译器不会知道哪一个。所以,这是一种有效的情况,你会发现这种事情真的发生了。
对于Oracle文档:
导入封装部件
要导入的特定成员到当前文件,在任何类型定义,但 后放一个进口 声明在文件的开头包声明,如果有的话。以下是如何从 上一节中创建的图形包中导入Rectangle类的方法。
- 1. Python导入语句
- 2. JDatePicker导入语句
- 3. 导入Jar语句
- 4. Django导入语句
- 5. python导入语句语义
- 6. Java导入语句:什么是导入网络。
- 7. Java:导入与另一个导入语句冲突
- 8. Java导入一句
- 9. 导入语句的位置
- 10. 使用导入语句
- 11. Vim&Java:自动添加java导入语句
- 12. Java和MySQL插入语句
- 13. 插入IF语句 - Java的
- 14. 语法错误插入语句java
- 15. CodeModel:手动插入导入语句
- 16. 使用CURRENT_TIMESTAMP导致INSERT语句插入语句
- 17. import into Spark - 如何使用java import语句导入多个类?
- 18. Java Jersey新手问:导入语句错误?
- 19. 在Java源代码中查找未使用的导入语句
- 20. Java中冗余导入语句的影响是什么?
- 21. 为什么在Java导入语句中使用*很不好?
- 22. Python类定义 - 导入语句
- 23. python pth文件导入语句无效?
- 24. 澄清 - 在Eclipse中导入语句
- 25. 如何导入语句Android Studio中
- 26. XCode导入语句和子目录
- 27. python中导入语句的列表
- 28. mysql导入语句切断整数
- 29. 导入语句字节代码含义
- 30. 在Ubuntu 12.04上的Jsch导入语句
@PritamBanerjee他指的是Java,指向'Scala'的链接。 –
对,我的坏。复制了错误的一个。 –
其他人已经发布了正确的答案,但关于你的陈述“我不确定实际上是否有这样做的理由......”,实际上有很好的理由去做这些事情,斯卡拉允许它。一个原因的一个例子是限制导入的范围,以便它仅在特定块中可用。 –