作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过本教程学习 java 和 awt 框架:https://www3.ntu.edu.sg/home/ehchua/programming/java/j4a_gui.html ,但我遇到了一个绊脚石:你如何导入包?例如,这是我不想做的事情:
import java.awt.* //pollutes global namespace and results in hard-to-trace class names
我也不想每次想使用 awt 包的类之一时都引用 java 包:
setLayout(new java.awt.FlowLayout()) //cumbersome and redundant
我想做的是这样的:
from java import awt
setLayout(new awt.FlowLayout()) //I want to use awt here without saying java.awt
在 java 中是否可以实现类似的功能,还是该语言不允许这样做?
我也不知道 setLayout 从何而来,但这不是重点。我假设它是隐式调用的 Frame 静态方法?
最佳答案
如果您担心污染,可以导入个别类。
示例
import java.awt.Rectangle;
import java.awt.Graphics2D;
...
我不相信有任何方法可以完全按照您的描述进行操作。
还值得指出的是,您可以使用通配符进行导入,并使用完整的包名称清除任何不明确的情况。
import java.awt.*;
import opencv.*; //both awt and opencv have a Rectangle class
void foo() {
java.awt.Rectangle r1 = new java.awt.Rectangle();
opencv.Rectangle r2 = new opencv.Rectangle();
}
另请参阅此以获取更多信息:https://stackoverflow.com/a/149282/4484072
@LewBloch 提出了一个重点,即 java 包没有真正的层次结构。因此,例如,java.awt.*
将只包含该包中的内容,而不包含其他以 java.awt
开头的包,例如 java.awt。事件
。这些名称看起来好像与您有关,但实际上由 JVM 单独处理
关于java - 如何在java中导入包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43730293/
我是一名优秀的程序员,十分优秀!