- java.lang.Object
-
- javax.tools.ForwardingJavaFileManager<M>
-
- 参数类型
-
M
- 由该对象转发的文件管理器的种类
- All Implemented Interfaces:
-
Closeable
,Flushable
,AutoCloseable
,JavaFileManager
,OptionChecker
public class ForwardingJavaFileManager<M extends JavaFileManager> extends Object implements JavaFileManager
转发给给定的文件管理器。 此类的子类可能会覆盖其中某些方法,并可能还提供其他字段和方法。- 从以下版本开始:
- 1.6
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface javax.tools.JavaFileManager
JavaFileManager.Location
-
-
Field Summary
Fields Modifier and Type Field 描述 protected M
fileManager
所有方法的委托文件管理器。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
ForwardingJavaFileManager(M fileManager)
创建一个新的ForwardingJavaFileManager实例。
-
方法摘要
-
-
-
字段详细信息
-
fileManager
protected final M extends JavaFileManager fileManager
所有方法的委托文件管理器。
-
-
构造方法详细信息
-
ForwardingJavaFileManager
protected ForwardingJavaFileManager(M fileManager)
创建一个新的ForwardingJavaFileManager实例。- 参数
-
fileManager
- 委托给这个文件管理器
-
-
方法详细信息
-
getClassLoader
public ClassLoader getClassLoader(JavaFileManager.Location location)
说明从接口JavaFileManager
复制返回一个类加载器,用于从给定的面向包的位置加载插件。 例如,要加载注释处理器,编译器将请求ANNOTATION_PROCESSOR_PATH
位置的类加载器。- Specified by:
-
getClassLoader
在接口JavaFileManager
- 参数
-
location
- 一个位置 - 结果
-
给定位置的类加载器;
或
null
如果从给定位置加载插件被禁用或位置不知道 - 异常
-
SecurityException
- 如果无法在当前安全上下文中创建类加载器 -
IllegalStateException
- 如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开
-
list
public Iterable<JavaFileObject> list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException
描述从接口JavaFileManager
复制列出与给定的面向对象位置匹配的所有文件对象。 如果recurse为真,则在“子包”中列出文件对象。注意:即使给定的位置对于该文件管理器是未知的,也可能不会返回
null
。 而且,未知的位置可能不会引起异常。- Specified by:
-
list
在接口JavaFileManager
- 参数
-
location
- 一个位置 -
packageName
- 包名称 -
kinds
- 只返回这些类型的对象 -
recurse
- 如果真的包括“子包” - 结果
- 符合给定条件的文件对象的迭代
- 异常
-
IOException
- 如果发生I / O错误,或者如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开 -
IllegalStateException
- 如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开
-
inferBinaryName
public String inferBinaryName(JavaFileManager.Location location, JavaFileObject file)
说明从接口JavaFileManager
复制基于面向包的位置来触发文件对象的二进制名称。 根据The Java™ Language Specification,返回的二进制名称可能不是有效的二进制名称。- Specified by:
-
inferBinaryName
在接口JavaFileManager
- 参数
-
location
- 一个位置 -
file
- 一个文件对象 - 结果
-
二进制名称或
null
在给定位置找不到文件对象 - 异常
-
IllegalStateException
- 如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开
-
isSameFile
public boolean isSameFile(FileObject a, FileObject b)
描述从接口JavaFileManager
复制比较两个文件对象,如果它们代表相同的底层对象,则返回true。- Specified by:
-
isSameFile
在接口JavaFileManager
- 参数
-
a
- 一个文件对象 -
b
- 一个文件对象 - 结果
- 如果给定的文件对象代表相同的底层对象,则为true
- 异常
-
IllegalArgumentException
- 如果任一参数是使用另一个文件管理器创建的,并且此文件管理器不支持外部文件对象
-
handleOption
public boolean handleOption(String current, Iterator<String> remaining)
描述从接口JavaFileManager
复制处理一个选项 如果current
是该文件管理器的选项,remaining
从remaining
使用该选项的任何参数,并返回true,否则返回false。- Specified by:
-
handleOption
在接口JavaFileManager
- 参数
-
current
- 当前选项 -
remaining
- 剩余选项 - 结果
- 如果此选项由此文件管理器处理,则为true,否则为false
- 异常
-
IllegalArgumentException
- 如果此文件管理器的此选项被错误地使用 -
IllegalStateException
- 如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开
-
hasLocation
public boolean hasLocation(JavaFileManager.Location location)
说明从界面JavaFileManager
复制确定此文件管理器是否已知位置。- Specified by:
-
hasLocation
在接口JavaFileManager
- 参数
-
location
- 一个位置 - 结果
- 如果位置已知,则为真
-
isSupportedOption
public int isSupportedOption(String option)
说明从接口OptionChecker
复制确定给定选项是否受支持,如果是,该选项的参数数量。- Specified by:
-
isSupportedOption
在接口OptionChecker
- 参数
-
option
- 一个选项 - 结果
- 给定选项的参数数量,如果该选项不受支持,则为-1
-
getJavaFileForInput
public JavaFileObject getJavaFileForInput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind) throws IOException
描述从接口JavaFileManager
复制返回一个file object,用于表示在给定的面向对象的位置中指定类型的指定类的输入。- Specified by:
-
getJavaFileForInput
在接口JavaFileManager
- 参数
-
location
- 一个位置 -
className
- 一个类的名称 -
kind
- 文件的种类,必须是SOURCE
或CLASS
之一 - 结果
-
文件对象,如果文件不存在,可能会返回
null
- 异常
-
IllegalArgumentException
- 如果该文件管理器不知道该位置,并且文件管理器不支持未知位置,或者该类型无效,或者该位置是面向模块的位置 -
IllegalStateException
- 如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开 -
IOException
- 如果发生I / O错误,或者如果已经调用了JavaFileManager.close()
,并且此文件管理器无法重新打开
-
getJavaFileForOutput
public JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) throws IOException
说明从接口JavaFileManager
复制返回一个file object,用于在给定的面向对象的位置中表示指定类型的指定类的输出。可选地,该文件管理器可以将兄弟姐妹视为提示放置输出的位置。 这个提示的确切语义是未指定的。 例如,JDK编译器javac将将类文件放置在与源文件源相同的目录中,除非提供了一个类文件输出目录。 为了方便这种行为,javac可以在调用此方法时将起始源文件提供为兄弟。
- Specified by:
-
getJavaFileForOutput
在接口JavaFileManager
- 参数
-
location
- 面向包的位置 -
className
- 一个类的名称 -
kind
- 文件的种类,必须是SOURCE
或CLASS
之一 -
sibling
- 用作放置提示的文件对象; 可能是null
- 结果
- 用于输出的文件对象
- 异常
-
IllegalArgumentException
- 如果此文件管理器不知道同级,或者该文件管理器不知道该位置,并且文件管理器不支持未知位置,或者该类型无效,或者该位置不是输出位置 -
IllegalStateException
-JavaFileManager.close()
已被调用,此文件管理器无法重新打开 -
IOException
- 如果发生I / O错误,或者如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开
-
getFileForInput
public FileObject getFileForInput(JavaFileManager.Location location, String packageName, String relativeName) throws IOException
说明从界面JavaFileManager
复制返回file object用于表示指定的输入relative name中指定的包在给定的取向包位置。如果返回的对象表示一个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"
的文件对象。- Specified by:
-
getFileForInput
在接口JavaFileManager
- 参数
-
location
- 面向包的位置 -
packageName
- 一个包名 -
relativeName
- 相对名称 - 结果
-
文件对象,如果文件不存在,可能会返回
null
- 异常
-
IllegalArgumentException
- 如果该文件管理器不知道该位置,并且文件管理器不支持未知位置,或者如果relativeName
无效,或者该位置是面向模块的位置 -
IllegalStateException
- 如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开 -
IOException
- 如果发生I / O错误,或者如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开
-
getFileForOutput
public FileObject getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling) throws IOException
说明从接口JavaFileManager
复制返回file object用于表示指定的输出relative name中指定的包在给定的位置。可选地,该文件管理器可以将兄弟姐妹视为提示放置输出的位置。 这个提示的确切语义是未指定的。 例如,JDK编译器javac将将类文件放置在与源文件源相同的目录中,除非提供了一个类文件输出目录。 为了方便这种行为,javac可以在调用此方法时将起始源文件提供为兄弟。
如果返回的对象表示一个source或class文件,那么它必须是
JavaFileObject
的一个实例。非法地,此方法返回的文件对象位于位置,包名称和相对名称的连接中,或者位于兄弟参数旁边。 参见
getFileForInput
的一个例子。- Specified by:
-
getFileForOutput
在接口JavaFileManager
- 参数
-
location
- 输出位置 -
packageName
- 包名称 -
relativeName
- 相对名称 -
sibling
- 用作放置提示的文件对象; 可能是null
- 结果
- 一个文件对象
- 异常
-
IllegalArgumentException
- 如果此文件管理器不知道同级,或者该文件管理器不知道该位置,并且文件管理器不支持未知位置,或者如果relativeName
无效,或者该位置不是输出位置 -
IllegalStateException
- 如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开 -
IOException
- 如果发生I / O错误,或者如果已经调用了JavaFileManager.close()
,并且该文件管理器无法重新打开
-
flush
public void flush() throws IOException
描述从接口JavaFileManager
复制刷新此文件管理器直接或间接打开输出的任何资源。 冲洗一个封闭的文件管理器没有任何效果。- Specified by:
-
flush
在接口Flushable
- Specified by:
-
flush
在接口JavaFileManager
- 异常
-
IOException
- 如果发生I / O错误 - 另请参见:
-
JavaFileManager.close()
-
close
public void close() throws IOException
描述从接口JavaFileManager
复制释放此文件管理器直接或间接打开的任何资源。 这可能会使此文件管理器无用,并且对此对象或通过此对象获取的任何对象的方法的后续调用的影响是未定义的,除非明确允许。 但是,关闭已经关闭的文件管理器没有任何效果。- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
在接口Closeable
- Specified by:
-
close
在接口JavaFileManager
- 异常
-
IOException
- 如果发生I / O错误 - 另请参见:
-
JavaFileManager.flush()
-
getLocationForModule
public JavaFileManager.Location getLocationForModule(JavaFileManager.Location location, String moduleName) throws IOException
描述从接口JavaFileManager
复制在位置中获取命名模块的位置,该位置可以是面向模块的位置或输出位置。 如果给定位置是输出位置,则结果将是输出位置,或者它将是面向包的位置。- Specified by:
-
getLocationForModule
在接口JavaFileManager
- 参数
-
location
- 面向模块的位置 -
moduleName
- 要找到的模块的名称 - 结果
- 命名模块的位置
- 异常
-
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 9
-
getLocationForModule
public JavaFileManager.Location getLocationForModule(JavaFileManager.Location location, JavaFileObject fo) throws IOException
说明从接口JavaFileManager
复制获取包含要在一个位置找到的特定文件的模块的位置,该位置可以是面向模块的位置或输出位置。 如果给定位置是输出位置,则结果将是输出位置,或者它将是面向包的位置。- Specified by:
-
getLocationForModule
在接口JavaFileManager
- 参数
-
location
- 面向模块的位置 -
fo
- 该文件 - 结果
- 该模块包含该文件
- 异常
-
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 9
-
getServiceLoader
public <S> ServiceLoader<S> getServiceLoader(JavaFileManager.Location location, Class<S> service) throws IOException
说明从接口JavaFileManager
复制从给定位置获取特定服务类的服务加载程序。 如果位置是面向模块的位置,则服务加载器将使用该位置中找到的模块中的服务声明。 否则,使用面向包的位置创建服务加载程序,在这种情况下,使用META-INF/services
的提供程序配置文件确定服务。- Specified by:
-
getServiceLoader
在接口JavaFileManager
- 参数类型
-
S
- 服务类 - 参数
-
location
- 面向模块的位置 -
service
- 服务类的Class
对象 - 结果
- 用于给定服务类的服务加载器
- 异常
-
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 9
-
inferModuleName
public String inferModuleName(JavaFileManager.Location location) throws IOException
描述从接口JavaFileManager
复制从其位置输入模块的名称,由getLocationForModule
或listModuleLocations
返回。- Specified by:
-
inferModuleName
在接口JavaFileManager
- 参数
-
location
- 表示模块的面向封装的位置 - 结果
- 模块的名称
- 异常
-
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 9
-
listLocationsForModules
public Iterable<Set<JavaFileManager.Location>> listLocationsForModules(JavaFileManager.Location location) throws IOException
描述从接口JavaFileManager
复制列出面向模块的位置或输出位置中所有模块的位置。 如果给定的位置是输出,返回的位置将是输出位置,或者它将是面向包的位置。- Specified by:
-
listLocationsForModules
在接口JavaFileManager
- 参数
-
location
- 要列出模块的面向模块的位置 - 结果
- 一系列位置包含模块
- 异常
-
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 9
-
contains
public boolean contains(JavaFileManager.Location location, FileObject fo) throws IOException
说明从界面JavaFileManager
复制确定给定的文件对象是否“包含在”指定的位置。对于面向包的位置,如果存在packageName和relativeName的值,则文件对象将包含在该位置,以便以下任一调用将返回
same
文件对象:getFileForInput(location, packageName, relativeName) getFileForOutput(location, packageName, relativeName, null)
对于面向模块的位置,如果存在可以通过调用获得的模块,则文件对象包含在该位置中:
getLocationForModule(location, moduleName)
使得文件对象包含在该模块的(面向对象的)位置中。- Specified by:
-
contains
在接口JavaFileManager
- 参数
-
location
- 的位置 -
fo
- 文件对象 - 结果
- 该文件是否包含在该位置
- 异常
-
IOException
- 如果确定结果有问题 - 从以下版本开始:
- 9
-
-