M
- 由该对象转发的文件管理器的种类
public class ForwardingJavaFileManager<M extends JavaFileManager> extends Object implements JavaFileManager
JavaFileManager.Location
Modifier and Type | Field and Description |
---|---|
protected M |
fileManager
所有方法的委托文件管理器。
|
Modifier | Constructor and Description |
---|---|
protected |
ForwardingJavaFileManager(M fileManager)
创建一个新的ForwardingJavaFileManager实例。
|
protected final M extends JavaFileManager fileManager
protected ForwardingJavaFileManager(M fileManager)
fileManager
- 委托给这个文件管理器
public ClassLoader getClassLoader(JavaFileManager.Location location)
JavaFileManager
复制
ANNOTATION_PROCESSOR_PATH
位置请求类加载器。
getClassLoader
在接口
JavaFileManager
location
- 一个位置
null
如果从给定位置加载插件被禁用或位置不知道
SecurityException
- 如果无法在当前安全上下文中创建类加载器
IllegalStateException
- 如果已经调用了
JavaFileManager.close()
,并且该文件管理器无法重新打开
public Iterable<JavaFileObject> list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException
JavaFileManager
复制
注意:即使给定的位置对于该文件管理器是未知的,它也可能不会返回null
。 而且,未知的位置可能不会引起异常。
list
在接口
JavaFileManager
location
- 一个位置
packageName
- 一个包名
kinds
- 返回只有这些类型的对象
recurse
- 如果真的包括“子包”
IOException
- 如果发生I / O错误,或者如果
调用了JavaFileManager.close()
,并且该文件管理器无法重新打开
IllegalStateException
- 如果
JavaFileManager.close()
已被调用,并且此文件管理器无法重新打开
public String inferBinaryName(JavaFileManager.Location location, JavaFileObject file)
JavaFileManager
inferBinaryName
在接口
JavaFileManager
location
- 一个位置
file
- 一个文件对象
null
在给定位置找不到文件对象
IllegalStateException
- 如果
JavaFileManager.close()
已被调用,并且此文件管理器无法重新打开
public boolean isSameFile(FileObject a, FileObject b)
JavaFileManager
isSameFile
在接口
JavaFileManager
a
- 文件对象
b
- 一个文件对象
IllegalArgumentException
- 如果任一参数是使用另一个文件管理器创建的,并且该文件管理器不支持外部文件对象
public boolean handleOption(String current, Iterator<String> remaining)
JavaFileManager
current
是该文件管理器的选项, remaining
从remaining
使用该选项的任何参数,并返回true,否则返回false。
handleOption
在接口
JavaFileManager
current
- 当前选项
remaining
- 剩余的选项
IllegalArgumentException
- 如果此文件管理器的此选项被错误地使用
IllegalStateException
- 如果
JavaFileManager.close()
已被调用,并且此文件管理器无法重新打开
public boolean hasLocation(JavaFileManager.Location location)
JavaFileManager
hasLocation
在接口
JavaFileManager
location
- 一个位置
public int isSupportedOption(String option)
OptionChecker
isSupportedOption
在接口
OptionChecker
option
- 一个选项
public JavaFileObject getJavaFileForInput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind) throws IOException
JavaFileManager
getJavaFileForInput
在界面
JavaFileManager
location
- 一个位置
className
- 一个类的名字
kind
- 文件的种类,必须是
SOURCE
或
CLASS
之一
null
IllegalArgumentException
- 如果该文件管理器不知道该位置,并且文件管理器不支持未知位置,或者该类型无效
IllegalStateException
- 如果
JavaFileManager.close()
已被调用,并且此文件管理器无法重新打开
IOException
- 如果发生I / O错误,或者如果
调用了JavaFileManager.close()
,并且该文件管理器无法重新打开
public JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) throws IOException
JavaFileManager
复制
可选地,该文件管理器可以将兄弟姐妹视为提示放置输出的位置。 这个提示的确切语义是未指定的。 例如,JDK编译器javac将将类文件放置在与源文件源相同的目录中,除非提供了一个类文件输出目录。 为了方便这种行为,javac可以在调用此方法时将起始源文件提供为兄弟。
getJavaFileForOutput
在界面
JavaFileManager
location
- 一个位置
className
- 一个类的名字
kind
- 文件的种类,必须是
SOURCE
或
CLASS
之一
sibling
- 用作放置提示的文件对象;
可能是null
IllegalArgumentException
- 如果此文件管理器不知道同级,或者该文件管理器不知道该位置,并且文件管理器不支持未知位置,或者该类型无效
IllegalStateException
-
JavaFileManager.close()
已被调用,此文件管理器无法重新打开
IOException
- 如果发生I / O错误,或者如果
调用了JavaFileManager.close()
,并且无法重新打开此文件管理器
public FileObject getFileForInput(JavaFileManager.Location location, String packageName, String relativeName) throws IOException
JavaFileManager
复制
如果返回的对象表示一个source或class文件,那么它必须是一个JavaFileObject
的实例。
非法地,此方法返回的文件对象位于位置,包名称和相对名称的并置中。 例如,要在SOURCE_PATH位置的“com.sun.tools.javac”包中找到属性文件“resources / compiler.properties”,可能会调用此方法:
getFileForInput(SOURCE_PATH, "com.sun.tools.javac", "resources/compiler.properties");
如果调用在Windows上执行,SOURCE_PATH设置为"C:\Documents and Settings\UncleBob\src\share\classes"
,则有效的结果将是表示文件"C:\Documents and Settings\UncleBob\src\share\classes\com\sun\tools\javac\resources\compiler.properties"的文件"C:\Documents and Settings\UncleBob\src\share\classes\com\sun\tools\javac\resources\compiler.properties"
。
getFileForInput
在界面
JavaFileManager
location
- 一个位置
packageName
- 包名称
relativeName
- 相对名称
null
IllegalArgumentException
- 如果该文件管理器不知道位置,并且文件管理器不支持未知位置,或者如果
relativeName
无效
IllegalStateException
- 如果已经调用了
JavaFileManager.close()
,并且此文件管理器无法重新打开
IOException
- 如果发生I / O错误,或者如果
调用了JavaFileManager.close()
,并且该文件管理器无法重新打开
public FileObject getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling) throws IOException
JavaFileManager
可选地,该文件管理器可以将兄弟姐妹视为提示放置输出的位置。 这个提示的确切语义是未指定的。 例如,JDK编译器javac将将类文件放置在与源文件源相同的目录中,除非提供了一个类文件输出目录。 为了方便这种行为,javac可以在调用此方法时将起始源文件提供为兄弟。
如果返回的对象表示一个source或class文件,则它必须是JavaFileObject
的一个实例。
非法地,此方法返回的文件对象位于位置,包名称和相对名称的连接中,或者位于兄弟参数旁边。 参见getFileForInput
为例。
getFileForOutput
在接口
JavaFileManager
location
- 一个位置
packageName
- 包名称
relativeName
- 相对名称
sibling
- 用作放置提示的文件对象;
可能是null
IllegalArgumentException
- 如果此文件管理器不知道同级,或者该文件管理器不知道该位置,并且文件管理器不支持未知位置,或者如果
relativeName
无效
IllegalStateException
- 如果已经调用了
JavaFileManager.close()
,并且该文件管理器无法重新打开
IOException
- 如果发生I / O错误,或者如果已经调用了
JavaFileManager.close()
,并且该文件管理器无法重新打开
public void flush() throws IOException
JavaFileManager
flush
在接口
Flushable
flush
在界面
JavaFileManager
IOException
- 如果发生I / O错误
JavaFileManager.close()
public void close() throws IOException
JavaFileManager
复制
close
在接口
Closeable
close
在界面
AutoCloseable
close
在接口
JavaFileManager
IOException
- 如果发生I / O错误
JavaFileManager.flush()