在 Java 9 的 JShell 中,我们需要遵循哪些规则?
Java 9 引入了一个交互式 REPL(读取-求值-打印-循环)工具:JShell,它允许我们执行代码片段并立即获得结果。代码片段是可以使用标准 Java 语法的指令。它表示单个表达式、语句或声明。
以下是使用 JShell 工具时需要遵循的一些规则。
JShell 工具规则
- 代码片段类似于 import 声明、类声明、方法声明、接口声明、字段声明、语句和主表达式。
- 不允许使用包声明。JShell 代码放置在临时 JShell 包下。
- 访问修饰符:public、protected 和 private,以及修饰符:final 和 static,在顶级声明中不允许使用。如果提供,则会忽略并发出警告。
- 修饰符:default 和 synchronized 在顶级声明中完全不允许。但是,它可以在嵌套上下文中使用。
- abstract 修饰符只能在类中使用。
- 当用户输入不完整时(例如,我们只输入 System.out 并跳过 println 部分),JShell 自动完成 API 会提示用户输入更多内容。
- 如果用户输入完整,但没有分号,JShell 可以自动追加它。
在下面的示例代码片段中,我们创建了Employee类,其中包含必要的 getter 方法,并使用new运算符对其进行了实例化。
代码片段
jshell> class Employee { ...> private String firstName; ...> private String lastName; ...> private String designation; ...> public Employee(String firstName, String lastName, String designation) { ...> this.firstName = firstName; ...> this.lastName = lastName; ...> this.designation = designation; ...> } ...> public String getFirstName() { ...> return firstName; ...> } ...> public String getLastName() { ...> return lastName; ...> } ...> public String getDesignation() { ...> return designation; ...> } ...> public String toString() { ...> return "Name = " + firstName + ", " + lastName + " | " + ...> "designation = " + designation; ...> } ...> } | created class Employee jshell> Employee emp = new Employee("Sai", "Adithya", "Content Developer"); emp ==> Name = Sai, Adithya | designation = Content Developer
广告