import static和import有何区别?为何在我的这段简单代码里无发编译运行?谢谢
设我在当前目录下:有文件ChapterEnumExe1.java
import static enumerated.Signal;
// Define an enum type:
//enum Signal { GREEN, YELLOW, RED, }
//public class TrafficLight {
public class ChapterEnumExe1 {
Signal color = Signal.RED;
public void change() {
switch(color) {
// Note that you don't have to say Signal.RED
// in the case statement:
case RED: color = Signal.GREEN;
break;
case GREEN: color = Signal.YELLOW;
break;
case YELLOW: color = Signal.RED;
break;
}
}
public String toString() {
return "The traffic light is " + color;
}
public static void main(String[] args) {
ChapterEnumExe1 t = new ChapterEnumExe1();
for(int i = 0; i < 7; i++) {
System.out.println(t);
t.change();
}
}
} /* Output:
The traffic light is RED
The traffic light is GREEN
The traffic light is YELLOW
The traffic light is RED
The traffic light is GREEN
The traffic light is YELLOW
The traffic light is RED
*///:~
还有一个目录enumerated,其下有文件:
//ernumerated/Signal.java
package enumerated;
public enum Signal { GREEN, YELLOW, RED, }在文件ChapterEnumExe1 中:
如果去掉import static enumerated.Signal;中的static,则可以得到正确结果
The traffic light is RED
The traffic light is GREEN
The traffic light is YELLOW
The traffic light is RED
The traffic light is GREEN
The traffic light is YELLOW
The traffic light is RED
否则的话,编译时提示如下错误:
ChapterEnumExe1.java:1: 错误: 找不到符号
import static enumerated.Signal;
^
符号: 类 enumerated
ChapterEnumExe1.java:1: 错误: 仅从类和接口静态导入
import static enumerated.Signal;
^
ChapterEnumExe1.java:8: 错误: 无法访问Signal
Signal color = Signal.RED;
^
错误的类文件: .\Signal.class
类文件包含错误的类: enumerated.Signal
请删除该文件或确保该文件位于正确的类路径子目录中。
ChapterEnumExe1.java:13: 错误: 找不到符号
case RED: color = Signal.GREEN;
^
符号: 变量 RED
位置: 类 ChapterEnumExe1
ChapterEnumExe1.java:15: 错误: 找不到符号
case GREEN: color = Signal.YELLOW;
^
符号: 变量 GREEN
位置: 类 ChapterEnumExe1
ChapterEnumExe1.java:17: 错误: 找不到符号
case YELLOW: color = Signal.RED;
^
符号: 变量 YELLOW
位置: 类 ChapterEnumExe1
请教各位高手,这是为啥?谢谢!
按照书上原文说法,应该是要做 static import,而且原作者代码中多处使用
import static net.mindview.util.Print.*;相关推荐
Claude AI代码分析能力超越编译器:从错误检测到性能优化
代码静态分析作为软件工程中的重要技术,通过分析源代码来发现潜在问题而不实际执行程序。其原理基于语法解析、数据流分析和控制流分析等技术,能够识别代码中的错误模式和优化机会。在开发实践中,静态分析工具的价值在于提前发现问题、提升代码质量和降低维护成本。传统编译器主要关注语法和类型检查,而现代AI驱动的代码分析工具如Claude,在错误检测、代码优化和跨语言支持方面展现出更强的能力。特别是在性能优化和复杂逻辑错误诊断等应用场景中,AI工具能够提供更深入的分析和实用的修复建议,自然收敛到智能代码审查这一主题。通过结
Codex作为微信小游戏确定性编译器的工程实践
微信小游戏开发面临运行时限制严、包体约束紧、真机兼容难等核心挑战,传统AI编程工具因生成非确定性代码而频繁触发审核失败或崩溃。Codex在此场景中并非通用代码生成器,而是可配置、可验证、离线运行的DSL编译器——它将自然语言意图直接编译为符合微信基础库版本、WebGL生命周期、安全沙箱规范的TypeScript代码,并在生成阶段即完成AST级合规校验。其技术价值在于消除eval、动态import、内存泄漏等高危模式,实现‘写即合规’;典型应用场景包括Unity WebGL构建管线集成、分包适配、热更新事件修
Django模板与静态文件系统原理与部署实战
Django模板系统本质是编译型引擎,通过路径查找、缓存编译和继承机制实现服务端动态渲染;静态文件系统则是开发-构建-部署三阶段流水线,依赖STATICFILES_DIRS、STATIC_ROOT与collectstatic协同工作。其核心价值在于分离关注点:模板承载服务端逻辑与安全沙箱,静态文件专供客户端资源加载,避免XSS与路径遍历风险。典型应用场景包括多环境部署、CDN集成、长期缓存优化及第三方前端库(如Bootstrap)统一管理。本文深入解析TEMPLATES配置、STATICFILES_STOR
C++模板深度解析:非类型参数与分离编译实战
编译期编程是现代C++工程性能与安全性的核心保障,而模板正是这一能力的基石。在泛型代码中,编译器通过模板实例化将抽象类型映射为具体机器码,这种编译期代码生成机制在带来零开销抽象的同时,也引入了独特的编译规则与链接约束。非类型模板参数允许将编译期常量直接嵌入类型系统,结合constexpr与递归可构建高效的编译期计算逻辑;而分离编译则揭示了模板实现必须对实例化点可见的根本原因,并可通过显式实例化优化构建效率。理解特化、SFINAE与if constexpr等机制,有助于开发者设计出既灵活又可靠的接口。本文从模
Windows平台源码编译XGBoost C++库:从环境配置到项目集成实战指南
在机器学习工程实践中,模型部署与性能优化是关键环节。源码编译作为一项基础技术,允许开发者根据特定硬件架构进行深度优化,例如启用AVX2等CPU指令集以提升计算密集型任务的执行效率。其技术价值在于能够彻底掌控依赖环境,生成高度定制化的二进制库,从而解决预编译包可能存在的兼容性与性能瓶颈问题。这一流程在需要将模型集成到C++生产环境、开发边缘计算应用或构建高性能推理服务等场景中尤为重要。本文以XGBoost这一广泛使用的梯度提升库为例,详细演示在Windows平台下,如何从Visual Studio与CMake


