Класс JShell.Builder
- java.lang.Object
-
- jdk.jshell.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(String... options) |
Добавляет параметры компилятора. |
JShell.Builder |
err(PrintStream err) |
Устанавливает вывод ошибок для выполняемого вычисления (это |
JShell.Builder |
executionEngine(String executionControlSpec) |
Устанавливает пользовательский движок для выполнения. |
JShell.Builder |
executionEngine(ExecutionControlProvider executionControlProvider,
Map<String,String> executionControlParameters) |
Устанавливает пользовательский движок для выполнения. |
JShell.Builder |
fileManager(Function<StandardJavaFileManager,StandardJavaFileManager> mapping) |
Настраивает |
JShell.Builder |
idGenerator(BiFunction<Snippet,Integer,String> generator) |
Устанавливает генератор идентификаторов имён для фрагментов кода. |
JShell.Builder |
in(InputStream in) |
Устанавливает входной поток для выполняемого вычисления (это |
JShell.Builder |
out(PrintStream out) |
Устанавливает выходной поток для выполняемого вычисления (это |
JShell.Builder |
remoteVMOptions(String... options) |
Устанавливает дополнительные параметры виртуальной машины для запуска. |
JShell.Builder |
tempVariableNameGenerator(Supplier<String> generator) |
Устанавливает генератор имён временных переменных для |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы
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).
Не используйте этот метод, если в этом нет явной необходимости.
Генератор будет использоваться для вновь созданных экземпляров Snippet. Идентификатор (id) доступен с помощью Snippet.id() и отображается в StackTraceElement.getFileName() для EvalException и UnresolvedReferenceException.
На вход генератору подаются Snippet и целое число. Целое число будет одинаковым для двух фрагментов, которые перезаписывают друг друга, но в остальных случаях уникальное.
Обратный вызов отправляется во время обработки фрагмента кода, и фрагмент (Snippet) и состояние в целом не стабильны. Не следует совершать вызовы для изменения состояния системы (включая состояние Snippet). Можно выполнять запросы к Snippet, за исключением Snippet.id(). Нельзя совершать вызовы экземпляра JShell из обратного вызова, за исключением status(Snippet).
По умолчанию (если этот метод не задан или generator равен null) идентификатор генерируется как строковое представление целого числа.
- Параметры:
-
generator-BiFunctionдля генерации строки идентификатора илиnull - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
remoteVMOptions
public JShell.Builder remoteVMOptions(String... options)
Устанавливает дополнительные параметры VM для запуска VM.
- Параметры:
-
options- Параметры для удаленной VM - Возвращает:
- экземпляр
Builder(для использования в цепочке инициализации)
compilerOptions
public JShell.Builder compilerOptions(String... options)
Добавляет параметры компилятора. Эти дополнительные параметры будут использоваться при вызовах компилятора для разбора, анализа и генерации кода. Параметры, которые влияют на результаты, не поддерживаются и имеют неопределённые последствия для работы JShell.
- Параметры:
-
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 Создаёт движок состояния JShell. Это точка входа во все функциональные возможности JShell. Создаёт удалённый процесс для выполнения. Поэтому важно закрыть возвращённый экземпляр.
- Возвращает:
- движок состояния
- Исключения:
-
IllegalStateException- если экземплярJShellне смог быть создан.
© 1993, 2020, 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/11/docs/api/jdk.jshell/jdk/jshell/JShell.Builder.html