Spec-Zone.ru › OpenJDK 25

Класс 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().
Начиная с:
9

Краткое описание методов

Модификатор и тип Метод Описание
JShell build()
Создаёт машину состояний JShell.
JShell.Builder compilerOptions(String... options)
Добавляет параметры компилятора.
JShell.Builder console(JShellConsole console)
Задаёт консоль для выполняемого вычисления.
JShell.Builder err(PrintStream err)
Задаёт поток вывода ошибок для выполняемого вычисления (это System.err).
JShell.Builder executionEngine(String executionControlSpec)
Задаёт пользовательский механизм выполнения.
JShell.Builder executionEngine(ExecutionControlProvider executionControlProvider, Map<String,String> executionControlParameters)
Задаёт пользовательский механизм выполнения.
JShell.Builder fileManager(Function<StandardJavaFileManager, StandardJavaFileManager> mapping)
Настраивает FileManager, используемый при компиляции и анализе исходного кода.
JShell.Builder idGenerator(BiFunction<Snippet,Integer,String> generator)
Задаёт генератор идентифицирующих имён для фрагментов кода.
JShell.Builder in(InputStream in)
Задаёт входные данные для выполняемого вычисления (это System.in).
JShell.Builder out(PrintStream out)
Задаёт выходные данные для выполняемого вычисления (это System.out).
JShell.Builder remoteVMOptions(String... options)
Задаёт дополнительные параметры виртуальной машины для её запуска.
JShell.Builder tempVariableNameGenerator(Supplier<String> generator)
Задаёт генератор имён временных переменных для VarSnippet типа Snippet.SubKind.TEMP_VAR_EXPRESSION_SUBKIND.

Методы, объявленные в классе 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 (для использования в цепочке инициализации)

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 — 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) идентификатор генерируется путём преобразования целого числа в строку.

Параметры:
generator — BiFunction для генерации строки идентификатора или null
Возвращает:
экземпляр Builder (для использования в цепочке инициализации)

remoteVMOptions

public JShell.Builder remoteVMOptions(String... options)
Задаёт дополнительные параметры виртуальной машины для её запуска.
Параметры:
options — параметры удалённой виртуальной машины
Возвращает:
экземпляр 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.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, где приведены более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/jdk.jshell/jdk/jshell/JShell.Builder.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API