jshell中的多行粘贴

时间:2017-01-24 16:53:16

标签: java java-9 jshell

我正在尝试使用jshell,但找不到粘贴多行表达式的选项。甚至可以在jshell中粘贴多行。与scala在paste mode中提供的内容类似。

4 个答案:

答案 0 :(得分:11)

所以如果你有这样的代码:

 int c = 2;
 int j = 4;
 int x = 5; 

复制并粘贴到jshell中,只处理前两个语句。

但如果你有这样的代码:

  int c = 2; int j = 4; int x = 5;

并粘贴到jshell:

jshell> int c = 2; int j = 4; int x = 5;
        c ==> 2
        j ==> 4
        x ==> 5 

更多代码如下:

HashMap<Integer, Integer> map2 = new HashMap<>(); for (int i = 0; i < 15; ++i) { map2.put(i, i);map2.put(i, i); } System.out.println(map2);

实际上会有效。

为什么?我不知道。

我知道复制/粘贴的唯一方法是通过(在jshell中输入):

  

/编辑

您可以根据需要进行粘贴。

答案 1 :(得分:5)

我试过了,只处理了前两行。最后还尝试使用额外的换行符和三行以上,并且仍然只处理了前两行。我不知道为什么,但我怀疑这是一个错误。

答案 2 :(得分:4)

This was a bug. It has been fixed: https://bugs.openjdk.java.net/browse/JDK-8169595

答案 3 :(得分:2)

以防万一人们仍然呆在这里,将整个代码块粘贴到jshell的一个小调整就是用大括号{}将其包装为:

{
 int c = 2;
 int j = 4;
 int x = 5; 
 // access these only in this scope though
 System.out.println("c : " + c + ", j : " + j + ", x = " + x);
}

示例屏幕:

enter image description here