Java 9中的JShell中的顶层声明不能使用的修饰符

Java 9中的JShell中的顶层声明不能使用的修饰符

在本文中,我们将介绍Java 9中的JShell工具,并讨论在JShell的顶层声明中不能使用的修饰符。

阅读更多:Java 教程

什么是JShell?

JShell是从Java 9版本开始引入的一个交互式编程工具。它提供了一个方便的方式来进行Java代码的实时执行和测试。与传统的Java开发工具相比,JShell允许我们在没有类或方法的上下文中编写和执行Java代码。

JShell中的顶层声明

在JShell中,可以通过键入代码来进行实时交互。顶层声明是指在代码中没有嵌套在其他类或方法中的声明。在JShell中,以下修饰符不能在顶层声明中使用:

  1. public:在顶层声明中,我们不能使用public修饰符。这是因为在JShell中,我们没有类的概念,只能直接编写代码片段。因此,不需要将代码片段声明为公共的。

示例:

jshell> public int sum(int a, int b) {
   ...>     return a + b;
   ...> }
|  Error:
|  illegal start of expression
|  public int sum(int a, int b) {
|  ^----^
  1. private:与public修饰符一样,私有修饰符在JShell的顶层声明中无效。由于代码片段是直接输入的,不存在类的私有成员。

示例:

jshell> private String name = "John";
|  Error:
|  illegal start of expression
|  private String name = "John";
|  ^------^
  1. protected:在JShell中,protected修饰符也无法在顶层声明中使用。同样的原因,代码片段没有类的继承关系,因此不需要将代码片段声明为受保护的。

示例:

jshell> protected double calculateDiscount(double amount) {
   ...>     return amount * 0.1;
   ...> }
|  Error:
|  illegal start of expression
|  protected double calculateDiscount(double amount) {
|  ^---------^
  1. static:在顶层声明中不能使用静态修饰符。JShell是基于交互式的思想设计的,静态成员在这种场景下没有意义。

示例:

jshell> static int count = 0;
|  Error:
|  illegal start of expression
|  static int count = 0;
|  ^----^   
  1. abstract:由于在JShell中没有类、方法的概念,因此无法在顶层声明中使用抽象修饰符。

示例:

jshell> abstract void printMessage(String message);
|  Error:
|  illegal start of expression
|  abstract void printMessage(String message);
|  ^---------^        

总结

在这篇文章中,我们介绍了Java 9中的JShell工具以及在JShell的顶层声明中不能使用的修饰符。JShell是一个非常有用的工具,它允许我们实时交互式地执行和测试Java代码。在JShell中,顶层声明不能使用public、private、protected、static和abstract修饰符。这是由于JShell的设计理念和用途所决定的,它不支持传统的面向对象编程中的类和方法的概念。

希望本文能够帮助您更好地理解JShell工具和它的限制。如果您对JShell感兴趣,请尝试使用它来进行实时的Java代码编写和测试。祝您编写愉快!

参考链接:
Java 9 JShell官方文档

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程