- java.lang.Object
-
- javax.tools.ForwardingJavaFileManager<M>
-
- 参数类型
-
M
- 此对象转发的文件管理器的类型
- 实现的所有接口
-
Closeable
,Flushable
,AutoCloseable
,JavaFileManager
,OptionChecker
public class ForwardingJavaFileManager<M extends JavaFileManager> extends Object implements JavaFileManager
转发给给定文件管理器的调用。 此类的子类可能会覆盖其中一些方法,还可能提供其他字段和方法。- 从以下版本开始:
- 1.6
-
-
嵌套类汇总
-
Nested classes/interfaces declared in interface javax.tools.JavaFileManager
JavaFileManager.Location
-
-
字段汇总
字段 变量和类型 字段 描述 protected M
fileManager
所有方法都委托给的文件管理器。
-
构造方法摘要
构造方法 变量 构造器 描述 protected
ForwardingJavaFileManager(M fileManager)
创建ForwardingJavaFileManager的新实例。
-
方法摘要
-
声明方法的类 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
声明方法的接口 javax.tools.JavaFileManager
close, flush, hasLocation
-
声明方法的接口 javax.tools.OptionChecker
isSupportedOption
-
-
-
-
字段详细信息
-
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
inJavaFileManager
- 参数
-
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为true,则在“subpackages”中列出文件对象。注意:即使此文件管理器未知给定位置,它也可能不会返回
null
。 此外,未知位置可能不会导致异常。- Specified by:
-
list
在界面JavaFileManager
- 参数
-
location
- 一个位置 -
packageName
- 包名称 -
kinds
- 仅返回这些类型的对象 -
recurse
- 如果为true则包含“子包” - 结果
- 与给定条件匹配的Iterable文件对象
- 异常
-
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()
且无法重新打开此文件管理器
-
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
- 如果此文件管理器不知道兄弟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()
且无法重新打开此文件管理器
-
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
in interfaceJavaFileManager
- 参数
-
location
- 面向模块的位置 -
fo
- 该文件 - 结果
- 包含该文件的模块
- 异常
-
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 9
-
getServiceLoader
public <S> ServiceLoader<S> getServiceLoader(JavaFileManager.Location location, 类<S> service) throws IOException
从界面复制的说明:JavaFileManager
从给定位置获取特定服务类的服务加载程序。 如果位置是面向模块的位置,则服务加载器将使用该位置中找到的模块中的服务声明。 否则,使用面向包的位置创建服务加载程序,在这种情况下,使用META-INF/services
的提供程序配置文件确定服务。- Specified by:
-
getServiceLoader
在界面JavaFileManager
- 参数类型
-
S
- 服务类 - 参数
-
location
- 面向模块的位置 -
service
- 服务类的类
对象 - 结果
- 给定服务类的服务加载器
- 异常
-
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
-
-