Класс JShell.Builder
- Вложенный класс:
JShell
public static class JShell.Builder extends Object
JShell. Создайте пользовательские экземпляры JShell, используя методы-сеттеры в этом классе. После нуля или более таких операций, используйте метод build() для создания экземпляра JShell. Все эти операции можно объединить. Например, для установки удалённых потоков вывода и ошибок:
JShell myShell =
JShell.builder()
.out(myOutStream)
.err(myErrStream)
.build(); Если особые настройки не требуются, просто используйте JShell.builder().build() или сокращённый эквивалент JShell.create().Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
JShell |
build() |
Создаёт движок состояния JShell. |
JShell.Builder |
compilerOptions |
Добавляет параметры компилятора. |
JShell.Builder |
console |
Устанавливает консоль для текущего вычисления. |
JShell.Builder |
err |
Устанавливает вывод ошибок для текущего вычисления (это System.err). |
JShell.Builder |
executionEngine |
Устанавливает пользовательский движок для выполнения. |
JShell.Builder |
executionEngine |
Устанавливает пользовательский движок для выполнения. |
JShell.Builder |
fileManager |
Настраивает FileManager, который будет использоваться для компиляции и анализа исходного кода. |
JShell.Builder |
idGenerator |
Устанавливает генератор идентификаторов имён для фрагментов кода. |
JShell.Builder |
in |
Устанавливает входной поток для текущего вычисления (это System.in). |
JShell.Builder |
out |
Устанавливает выходной поток для текущего вычисления (это System.out). |
JShell.Builder |
remoteVMOptions |
Устанавливает дополнительные параметры виртуальной машины для запуска. |
JShell.Builder |
tempVariableNameGenerator |
Устанавливает генератор имён временных переменных для VarSnippet вида Snippet.SubKind.TEMP_VAR_EXPRESSION_SUBKIND. |
Подробное описание методов
in
public JShell.Builder in(InputStream in)
System.in). Примечание: приложения, использующие System.in для фрагмента или другого пользовательского ввода, не могут использовать System.in в качестве потока ввода для удалённого процесса. Метод read класса InputStream может бросить исключение InterruptedIOException для сигнализации о том, что пользователь отменил ввод. Текущий выполняемый фрагмент будет автоматически stopped.
По умолчанию, если это не установлено, используется пустой входной поток — new ByteArrayInputStream(new byte[0]).
- Параметры:
-
in- потокInputStream, который будет перенаправлен вSystem.inв удалённом процессе выполнения - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
out
public JShell.Builder out(PrintStream out)
System.out). Управляющий процесс и удалённый процесс могут совместно использовать System.out. По умолчанию, если это не установлено, используется System.out.
- Параметры:
-
out- потокPrintStream, который будет перенаправлен вSystem.outв удалённом процессе выполнения - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
err
public JShell.Builder err(PrintStream err)
System.err). Управляющий процесс и удалённый процесс могут совместно использовать System.err. По умолчанию, если это не установлено, используется System.err.
- Параметры:
-
err- потокPrintStream, который будет перенаправлен вSystem.errв удалённом процессе выполнения - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
console
public JShell.Builder console(JShellConsole console)
По умолчанию, если это не установлено, консоль отсутствует (System.console() вернёт null при выполнении фрагмента).
- Параметры:
-
console- консоль для использования во время выполнения фрагмента - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации) - С:
- 21
tempVariableNameGenerator
public JShell.Builder tempVariableNameGenerator(Supplier<String> generator)
VarSnippet вида Snippet.SubKind.TEMP_VAR_EXPRESSION_SUBKIND. Не используйте этот метод, если у вас нет явной необходимости.
Генератор будет использоваться для вновь созданных экземпляров VarSnippet. Имя переменной запрашивается с помощью PersistentSnippet.name().
Обратный вызов передаётся во время обработки фрагмента, состояние JShell не стабильно. Никакие вызовы к экземпляру JShell не должны производиться из обратного вызова.
Сгенерированное имя должно быть уникальным среди активных фрагментов.
По умолчанию (если этот метод не установлен или generator равно null) имя генерируется как последовательный номер с префиксом "$".
- Параметры:
-
generator- функция для генерации строки имени временной переменной илиnull - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
idGenerator
public JShell.Builder idGenerator(BiFunction<Snippet,Integer,String> generator)
Не используйте этот метод, если у вас нет явной необходимости.
Генератор будет использоваться для вновь созданных экземпляров Snippet. Идентификатор (id) доступен с помощью Snippet.id() и может быть виден в StackTraceElement.getFileName() для EvalException и UnresolvedReferenceException.
Входными данными для генератора являются Snippet и целое число. Целое число будет одинаковым для двух фрагментов, которые перезаписывают друг друга, но в остальном уникально.
Обратный вызов отправляется во время обработки фрагмента, и фрагмент, и состояние в целом не стабильны. Не следует выполнять вызовы для изменения состояния системы (включая состояние фрагмента). Допускаются запросы к фрагменту, за исключением Snippet.id(). Никаких вызовов к экземпляру JShell не должно производиться из обратного вызова, за исключением status(Snippet).
По умолчанию (если этот метод не установлен или generator равно null) id генерируется как строковое представление целого числа.
- Параметры:
-
generator- функция для генерации строки id илиnull - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
remoteVMOptions
public JShell.Builder remoteVMOptions(String... options)
- Параметры:
-
options- Параметры удалённой JVM - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
compilerOptions
public JShell.Builder compilerOptions(String... options)
- Параметры:
-
options- дополнительные параметры для вызовов компилятора - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
executionEngine
public JShell.Builder executionEngine(String executionControlSpec)
ExecutionControl, выбранным по указанному спецификации управления выполнением. Используйте не более одного из этих перегруженных методов построения executionEngine.- Параметры:
-
executionControlSpec- спецификация управления выполнением, которая документирована в пакетеjdk.jshell.spi. - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
executionEngine
public JShell.Builder executionEngine(ExecutionControlProvider executionControlProvider, Map<String,String> executionControlParameters)
ExecutionControl. Используйте не более одного из этих перегруженных методов построения executionEngine.- Параметры:
-
executionControlProvider- поставщик для предоставления движка выполнения -
executionControlParameters- параметры для поставщика, илиnullдля параметров по умолчанию - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
fileManager
public JShell.Builder fileManager(Function<StandardJavaFileManager,StandardJavaFileManager> mapping)
FileManager для использования компиляцией и анализом исходного кода. Если не установлено или передано null, используется стандартный менеджер файлов компилятора (отображение по идентификатору). Для использования в специальных приложениях, где необходимо переопределить стандартное обращение с файлами компилятора. Смотрите API менеджера файлов для получения дополнительной информации. Входной менеджер файлов позволяет передавать менеджеры файлов, если это не нужно, входной менеджер файлов можно проигнорировать (постоянная функция).- Параметры:
-
mapping- функция, которая, получив стандартный менеджер файлов компилятора, возвращает менеджер файлов для использования - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
build
public JShell build() throws IllegalStateException
- Возвращает:
- движок состояния
- Бросает:
-
IllegalStateException- если экземплярJShellне смог быть создан.
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/jdk.jshell/jdk/jshell/JShell.Builder.html