Класс SimpleJavaFileObject
- Все реализуемые интерфейсы:
-
FileObject,JavaFileObject
public class SimpleJavaFileObject extends Object implements JavaFileObject
- С момента:
- 1.6
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе javax.tools.JavaFileObject
JavaFileObject.Kind
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected final JavaFileObject.Kind |
kind |
Тип этого объекта файла. |
protected final URI |
uri |
URI для этого объекта файла. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт SimpleJavaFileObject заданного типа и с заданным URI. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
delete() |
Удаляет этот объект файла. |
static JavaFileObject |
forSource |
Создаёт JavaFileObject, представляющий заданный исходный контент. |
Modifier |
getAccessLevel() |
Предоставляет подсказку об уровне доступа класса, представленного этим объектом файла. |
CharSequence |
getCharContent |
Возвращает символьный контент этого объекта файла, если доступен. |
JavaFileObject.Kind |
getKind() |
Возвращает тип этого объекта файла. |
long |
getLastModified() |
Возвращает время последнего изменения этого объекта файла. |
String |
getName() |
Возвращает удобочитаемое имя для этого объекта файла. |
NestingKind |
getNestingKind() |
Предоставляет подсказку об уровне вложенности класса, представленного этим объектом файла. |
boolean |
isNameCompatible |
Проверяет, совместим ли этот объект файла с указанным простым именем и типом. |
InputStream |
openInputStream() |
Возвращает InputStream для этого объекта файла. |
OutputStream |
openOutputStream() |
Возвращает OutputStream для этого объекта файла. |
Reader |
openReader |
Возвращает ридер для этого объекта. |
Writer |
openWriter() |
Возвращает Writer для этого объекта файла. |
URI |
toUri() |
Возвращает URI, идентифицирующий этот объект файла. |
Подробное описание полей
uri
protected final URI uri
kind
protected final JavaFileObject.Kind kind
Подробное описание конструкторов
SimpleJavaFileObject
protected SimpleJavaFileObject(URI uri, JavaFileObject.Kind kind)
- Параметры:
-
uri- URI этого объекта файла -
kind- тип этого объекта файла
Подробное описание методов
toUri
public URI toUri()
FileObject- Определено в:
-
toUriв интерфейсеFileObject - Возвращает:
- URI
getName
public String getName()
FileObject"BobsApp\Test.java" в командной строке, этот метод должен вернуть
"BobsApp\Test.java", в то время как метод toUri может вернуть
file:///C:/Documents%20and%20Settings/UncleBob/BobsApp/Test.java.- Определено в:
-
getNameв интерфейсеFileObject - Возвращает:
- удобочитаемое имя
openInputStream
public InputStream openInputStream() throws IOException
- Определено в:
-
openInputStreamв интерфейсеFileObject - Требования к реализации:
- Эта реализация всегда выбрасывает UnsupportedOperationException.
- Возвращает:
- InputStream
- Исключения:
-
IOException- если произошла ошибка ввода-вывода
openOutputStream
public OutputStream openOutputStream() throws IOException
- Определено в:
-
openOutputStreamв интерфейсеFileObject - Требования к реализации:
- Эта реализация всегда выбрасывает UnsupportedOperationException.
- Возвращает:
- OutputStream
- Исключения:
-
IOException- если произошла ошибка ввода-вывода
openReader
public Reader openReader(boolean ignoreEncodingErrors) throws IOException
ignoreEncodingErrors не равно true.- Определено в:
-
openReaderв интерфейсеFileObject - Требования к реализации:
- Эта реализация оборачивает результат
getCharContent(boolean)вReader. - Параметры:
-
ignoreEncodingErrors- игнорировать ошибки кодирования, если равно true - Возвращает:
- Читатель, обернутый вокруг результата getCharContent
- Исключения:
-
IllegalStateException- если этот объект файла был открыт для записи и не поддерживает чтение -
UnsupportedOperationException- если этот тип объекта файла не поддерживает доступ к символам -
IOException- если произошла ошибка ввода-вывода
getCharContent
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException
ignoreEncodingErrors не равно true.- Определено в:
-
getCharContentв интерфейсеFileObject - Требования к реализации:
- Эта реализация всегда выбрасывает UnsupportedOperationException.
- Параметры:
-
ignoreEncodingErrors- игнорировать ошибки кодирования, если равно true - Возвращает:
- CharSequence, если доступно;
nullв противном случае - Исключения:
-
IOException- если произошла ошибка ввода-вывода
openWriter
public Writer openWriter() throws IOException
- Определено в:
-
openWriterв интерфейсеFileObject - Требования к реализации:
- Эта реализация оборачивает результат
openOutputStream()вWriter. - Возвращает:
- Writer, обернутый вокруг результата openOutputStream
- Исключения:
-
IllegalStateException- если этот объект файла был открыт для чтения и не поддерживает запись -
UnsupportedOperationException- если этот тип объекта файла не поддерживает доступ к символам -
IOException- если произошла ошибка ввода-вывода
getLastModified
public long getLastModified()
- Определено в:
-
getLastModifiedв интерфейсеFileObject - Требования к реализации:
- Эта реализация возвращает
0L. - Возвращает:
0L
delete
public boolean delete()
- Определено в:
-
deleteв интерфейсеFileObject - Требования к реализации:
- Эта реализация ничего не делает.
- Возвращает:
false
getKind
public JavaFileObject.Kind getKind()
JavaFileObject- Определено в:
-
getKindв интерфейсеJavaFileObject - Возвращает:
this.kind
isNameCompatible
public boolean isNameCompatible(String simpleName, JavaFileObject.Kind kind)
- Определено в:
-
isNameCompatibleв интерфейсеJavaFileObject - Требования к реализации:
- Эта реализация сравнивает путь своего URI с заданным простым именем. Этот метод возвращает true, если заданный тип равен типу этого объекта, и если путь равен
simpleName + kind.extensionили заканчивается на"/" + simpleName + kind.extension.Этот метод вызывает
getKind()иtoUri()и не обращается к полямuriиkindнапрямую. - Параметры:
-
simpleName- простое имя класса -
kind- тип - Возвращает:
-
true, если объект файла совместим;falseв противном случае
getNestingKind
public NestingKind getNestingKind()
NestingKind.MEMBER для обозначения NestingKind.LOCAL или NestingKind.ANONYMOUS. Если уровень вложенности неизвестен или этот объект файла не представляет файл класса, этот метод возвращает null.- Определено в:
-
getNestingKindв интерфейсеJavaFileObject - Требования к реализации:
- Эта реализация возвращает
null. - Возвращает:
- тип вложенности, или
null, если тип вложенности неизвестен
getAccessLevel
public Modifier getAccessLevel()
null.- Определено в:
-
getAccessLevelв интерфейсеJavaFileObject - Требования к реализации:
- Эта реализация возвращает
null. - Возвращает:
- уровень доступа
forSource
public static JavaFileObject forSource(URI uri, String content)
JavaFileObject, который представляет заданный исходный контент.
Указанный uri будет возвращён из toUri(). Указанный content будет возвращён из getCharContent(boolean). Метод getKind() вернёт JavaFileObject.Kind.SOURCE.
Все остальные методы будут вести себя так, как описано в документации в этом классе, как если бы конструктор был вызван с uri и Kind.SOURCE.
Этот метод, например, можно использовать для компиляции строкового значения в памяти в набор файлов .class в целевой директории:
var code = """
public class CompiledCode {}
""";
var compiler = ToolProvider.getSystemJavaCompiler();
var targetDirectory = "...";
var task = compiler.getTask(null,
null,
null,
List.of("-d", targetDirectory),
null,
List.of(SimpleJavaFileObject.forSource(URI.create("CompiledCode.java"), code)));
if (!task.call()) {
throw new IllegalStateException("Compilation failed!");
}
- Parameters:
-
uri- который должен использоваться для результирующегоJavaFileObject -
content- содержимоеJavaFileObject - Returns:
- a
JavaFileObject, представляющий заданный исходный контент. - Since:
- 23
© 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://download.java.net/java/early_access/jdk24/docs/api/java.compiler/javax/tools/SimpleJavaFileObject.html