jshell drop jshell drop означает изменение состояния фрагментов на DROPPED
и превращение их в неактивные (чтобы они перестали быть активными, и вы не сможете использовать их, пока не создадите их) еще раз)
Удаляет фрагмент, делая его неактивным. Укажите имя или идентификатор импорта, класса, метода или переменной. Для нескольких фрагментов разделите имена и идентификаторы пробелом. Используйте команду / list, чтобы увидеть идентификаторы фрагментов кода.
DROPPED
Фрагмент неактивен из-за явного вызова JShell.drop (Фрагмент).
В приведенном ниже коде у вас есть два snippets
и с помощью drop
вы сделали их неактивными
JShell shell = JShell.create();
shell.eval("int x = 5;");
shell.eval("x = 7;");
shell.snippets().forEach(s1->shell.drop(s1));
shell.snippets().forEach(s2->{
System.out.println(shell.status(s2)); //DROPPED
});
shell.snippets().forEach(System.out::println); //we print all active and inactive snippets
Таким же образом вы также можете видеть все активные и удаленные фрагменты в jshell
консоли
/ list [option]
Отображение списка фрагментов и их идентификатора. Если опция не введена, отображаются все активные фрагменты, но не запускаются фрагменты запуска.
/ list -all
Отображает все фрагменты, включая фрагменты запуска и фрагменты, которые не были выполнены, были перезаписаны или удалены. Идентификаторы, начинающиеся с s, являются фрагментами запуска. Идентификаторы, начинающиеся с e, - это фрагменты, которые не были выполнены.
Есть ли в JShell что-то, что возвращается на один шаг?
В jshell каждый вход представляет собой ровно один фрагмент, поэтому откат фрагментов невозможен.
Входными данными должен быть ровно один полный фрагмент исходного кода, то есть одно выражение, оператор, объявление переменной, объявление метода, объявление класса или импорт. Чтобы разбить произвольный ввод на отдельные полные фрагменты, используйте SourceCodeAnalysis.analyzeCompletion (String).