Класс SourceCodeAnalysis
public abstract class SourceCodeAnalysis extends Object
- Начиная с:
- 9
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
SourceCodeAnalysis.Attribute |
Атрибут диапазона, который можно использовать для выбора цвета. |
static enum |
SourceCodeAnalysis.Completeness |
Описывает завершённость заданного ввода. |
static interface |
SourceCodeAnalysis.CompletionInfo |
Результат analyzeCompletion(String input). |
static interface |
SourceCodeAnalysis.Documentation |
Документация кандидата на продолжение заданного пользовательского ввода. |
static final record |
SourceCodeAnalysis.Highlight |
Назначает диапазонам внутри фрагмента атрибуты, которые можно использовать для выбора цвета. |
static final class |
SourceCodeAnalysis.QualifiedNames |
Список возможных квалифицированных имён. |
static interface |
SourceCodeAnalysis.SnippetWrapper |
Обёртывание фрагмента исходного кода Java в корректный исходный код верхнего уровня Java. |
static interface |
SourceCodeAnalysis.Suggestion |
Кандидат на продолжение заданного пользовательского ввода. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract SourceCodeAnalysis.CompletionInfo |
analyzeCompletion |
Получает входную строку, находит в ней первый фрагмент кода (инструкцию, объявление, импорт или выражение) и определяет, завершён ли он. |
abstract String |
analyzeType |
Определяет тип заданного выражения. |
abstract List |
completionSuggestions |
Вычисляет возможные продолжения заданного ввода. |
abstract Collection |
dependents |
Возвращает коллекцию Snippets, которые, возможно, потребуется обновить при обновлении заданного Snippet. |
abstract List |
documentation |
Создаёт документацию для заданного пользовательского ввода. |
abstract List |
highlights |
Возвращает коллекцию Highlights, которые можно использовать для раскрашивания заданного фрагмента. |
abstract SourceCodeAnalysis.QualifiedNames |
listQualifiedNames |
Выводит список квалифицированных имён, известных для простого имени в заданном коде непосредственно слева от заданной позиции курсора. |
abstract List |
sourceToSnippets |
Преобразует исходный код фрагмента в объект Snippet (или в список объектов Snippet в случае некоторых объявлений переменных, например: int x, y, z;). |
abstract SourceCodeAnalysis.SnippetWrapper |
wrapper |
Возвращает сведения об обёртке для Snippet. |
abstract List |
wrappers |
Возвращает сведения об обёртке для фрагмента во входной исходной строке. |
Подробное описание методов
analyzeCompletion
public abstract SourceCodeAnalysis.CompletionInfo analyzeCompletion(String input)
- Параметры:
-
input— входная исходная строка - Возвращает:
- экземпляр CompletionInfo с информацией о расположении и завершённости
completionSuggestions
public abstract List<SourceCodeAnalysis.Suggestion> completionSuggestions(String input, int cursor, int[] anchor)
JShell, включая сведения о типах, для фильтрации предложений.- Параметры:
-
input— введённая пользователем на данный момент строка -
cursor— текущая позиция курсора в заданном текстеinput -
anchor— выходной параметр: при выборе варианта дополнения текст между начальной позицией и курсором будет удалён и заменён выбранным вариантом - Возвращает:
- список возможных продолжений заданного ввода.
documentation
public abstract List<SourceCodeAnalysis.Documentation> documentation(String input, int cursor, boolean computeJavadoc)
Documentation.- Параметры:
-
input— введённый пользователем на данный момент фрагмент -
cursor— текущая позиция курсора в заданном текстеinput -
computeJavadoc— true, если помимо сигнатуры нужно создать javadoc для заданного ввода - Возвращает:
- документацию для заданного пользовательского ввода; если вводу соответствуют несколько элементов, возвращаются несколько объектов
Documentation.
analyzeType
public abstract String analyzeType(String code, int cursor)
code и заканчивается в заданной позиции cursor. Возвращает null, если определить тип выражения невозможно.- Параметры:
-
code— выражение, тип которого требуется определить -
cursor— текущая позиция курсора в заданном коде - Возвращает:
- определённый тип или null, если его невозможно определить
listQualifiedNames
public abstract SourceCodeAnalysis.QualifiedNames listQualifiedNames(String code, int cursor)
JShell.addToClasspath(java.lang.String)).- Параметры:
-
code— выражение, для которого нужно вычислить возможные квалифицированные имена -
cursor— текущая позиция курсора в заданном коде - Возвращает:
- известные квалифицированные имена
wrapper
public abstract SourceCodeAnalysis.SnippetWrapper wrapper(Snippet snippet)
Snippet. Обёртка меняется при изменении среды, поэтому вызовы этого метода в разное время могут возвращать разные результаты.- Параметры:
-
snippet—Snippet, для которого требуется получить обёртку - Возвращает:
- сведения об обёртке
wrappers
public abstract List<SourceCodeAnalysis.SnippetWrapper> wrappers(String input)
Для некорректных и незавершённых фрагментов также создаются обёртки. Список упорядочен по порядку появления фрагментов. Обёртка меняется при изменении среды, поэтому вызовы этого метода в разное время могут возвращать разные результаты.
Ввод должен содержать ровно один завершённый фрагмент исходного кода, то есть одно выражение, инструкцию, объявление переменной, объявление метода, объявление класса или импорт. Чтобы разделить произвольный ввод на отдельные завершённые фрагменты, используйте analyzeCompletion(String).
Обёртка может отличаться от той, которую возвращает wrapper(Snippet), если исходный код был преобразован в Snippet.
- Параметры:
-
input— исходный ввод, на основе которого нужно создать обёртки - Возвращает:
- список сведений об обёртках
sourceToSnippets
public abstract List<Snippet> sourceToSnippets(String input)
Snippet (или в список объектов Snippet в случае некоторых объявлений переменных, например: int x, y, z;). Не устанавливает фрагменты: объявления недоступны другим фрагментам, импорты не добавляются. Не выполняет фрагменты. К объекту Snippet можно применять запросы. Значение Snippet.id() будет "*UNASSOCIATED*". Возвращённые фрагменты не связаны с экземпляром JShell, поэтому попытки передать их методам JShell приведут к выбросу IllegalArgumentException, если не указано иное. Они не будут отображаться в результатах запросов фрагментов, например JShell.snippets().
Ограничения на ввод такие же, как для JShell.eval(String).
Выполняется только предварительная компиляция, достаточная для создания Snippet. Заведомо ошибочные фрагменты возвращаются как ErroneousSnippet; остальные фрагменты могут содержать или не содержать ошибки.
- Параметры:
-
input— входная строка, которую нужно преобразовать - Возвращает:
- обычно список, содержащий один Snippet, но он может быть пустым или содержать несколько элементов
- Выбрасывает:
-
IllegalStateException— если экземплярJShellзакрыт. - Начиная с:
- 10
dependents
public abstract Collection<Snippet> dependents(Snippet snippet)
Snippets, которые, возможно, потребуется обновить при обновлении заданного Snippet. Возвращаемая коллекция составлена с расчётом на полноту и может содержать много ложноположительных результатов.- Параметры:
-
snippet—Snippet, для которого запрашиваются зависимые элементы - Возвращает:
- коллекцию зависимых элементов
highlights
public abstract List<SourceCodeAnalysis.Highlight> highlights(String snippet)
Highlights, которые можно использовать для раскрашивания заданного фрагмента. Возвращённые Highlights не перекрываются и отсортированы по начальной позиции.
- Параметры:
-
snippet— фрагмент, для которого требуется вычислитьHighlights - Возвращает:
- вычисленные
Highlights. - Начиная с:
- 19
© 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/SourceCodeAnalysis.html