gpt4 book ai didi

java - 如何在java中导入包?

转载 作者:行者123 更新时间:2023-11-29 04:31:17 25 4
gpt4 key购买 nike

我正在尝试通过本教程学习 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com