Класс 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 |
err |
Устанавливает выходной поток ошибок для текущего выполнения (он является System.err). |
JShell.Builder |
executionEngine |
Устанавливает пользовательский движок для выполнения. |
JShell.Builder |
executionEngine |
Устанавливает пользовательский движок для выполнения. |
JShell.Builder |
fileManager |
Настраивает FileManager для использования в компиляции и анализе исходного кода. |
JShell.Builder |
idGenerator |
Устанавливает генератор идентификаторов имён для фрагментов кода (Snippet). |
JShell.Builder |
in |
Устанавливает входной поток для текущего выполнения (он является System.in). |
JShell.Builder |
out |
Устанавливает выходной поток для текущего выполнения (он является System.out). |
JShell.Builder |
remoteVMOptions |
Устанавливает дополнительные параметры виртуальной машины для запуска JVM. |
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(для использования в цепочке инициализации)
tempVariableNameGenerator
public JShell.Builder tempVariableNameGenerator(Supplier<String> generator)
VarSnippet вида Snippet.SubKind.TEMP_VAR_EXPRESSION_SUBKIND. Не используйте этот метод, если в нём нет явной необходимости.
Генератор будет использоваться для вновь созданных экземпляров VarSnippet. Имя переменной запрашивается с помощью PersistentSnippet.name().
Обратный вызов отправляется во время обработки фрагмента; состояние JShell не стабильно. Из обратного вызова не допускаются какие-либо вызовы экземпляра JShell.
Сгенерированное имя должно быть уникальным внутри активных фрагментов.
По умолчанию (если это не задано или generator равно null) имя генерируется как порядковый номер с префиксом "$".
- Параметры:
-
generator-Supplierдля генерации строки имени временной переменной или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-BiFunctionдля генерации строки id илиnull - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
remoteVMOptions
public JShell.Builder remoteVMOptions(String... options)
- Параметры:
-
options- параметры для удалённой виртуальной машины - Возвращает:
- экземпляр
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, 2021, 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/17/docs/api/jdk.jshell/jdk/jshell/JShell.Builder.html