JavaTM 2 Platform
Standard Ed. 6

javax.tools
類別 ForwardingJavaFileManager<M extends JavaFileManager>

java.lang.Object
  繼承者 javax.tools.ForwardingJavaFileManager<M>
型別參數:
M - 此物件將轉發到的檔案管理器的型別
所有已實作的介面:
Closeable, Flushable, JavaFileManager, OptionChecker

public class ForwardingJavaFileManager<M extends JavaFileManager>
extends Object
implements JavaFileManager

將調用轉發到給定的檔案管理器。此類別的子類別可以覆寫其中某些方法,還可以提供附加欄位和方法。

從以下版本開始:
1.6

巢狀類別摘要
 
從介面 javax.tools.JavaFileManager 繼承的巢狀類別/介面
JavaFileManager.Location
 
欄位摘要
protected  M fileManager
          一個檔案管理器,所有方法都將委託給它。
 
建構子摘要
protected ForwardingJavaFileManager(M fileManager)
          創建一個新的 ForwardingJavaFileManager 的實例。
 
方法摘要
 void close()
          釋放此檔案管理器直接或間接打開的所有資源。
 void flush()
          刷新此檔案管理器直接或間接為輸出打開的所有資源。
 ClassLoader getClassLoader(JavaFileManager.Location location)
          獲取可從給定位置載入外掛程式的類別載入器。
 FileObject getFileForInput(JavaFileManager.Location location, String packageName, String relativeName)
          獲取輸入的檔案物件,它表示給定位置處指定包中的指定相對名稱
 FileObject getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling)
          獲取輸出的檔案物件,它表示給定位置處指定包中的指定相對名稱
 JavaFileObject getJavaFileForInput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind)
          獲取輸入的檔案物件,它表示給定位置處指定型別的指定類別。
 JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling)
          獲取輸出的檔案物件,它表示給定位置處指定型別的指定類別。
 boolean handleOption(String current, Iterator<String> remaining)
          處理一個選項。
 boolean hasLocation(JavaFileManager.Location location)
          確定此檔案管理器是否已知某位置。
 String inferBinaryName(JavaFileManager.Location location, JavaFileObject file)
          根據位置推斷檔案物件的二進制名稱。
 boolean isSameFile(FileObject a, FileObject b)
          比較兩個檔案物件,如果它們表示相同的底層物件,則返回 true。
 int isSupportedOption(String option)
          確定是否支持給定選項,如果支持,則返回該選項所使用的參數數量。
 Iterable<JavaFileObject> list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse)
          列出給定位置處符合給定標準的所有檔案物件。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

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 位置的類別載入器。

指定者:
介面 JavaFileManager 中的 getClassLoader
參數:
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,則列出“子包”中的檔案物件。

註:即使給定位置對於此檔案管理器是未知的,此方法也不會返回 null。未知位置也不會導致異常。

指定者:
介面 JavaFileManager 中的 list
參數:
location - 位置
packageName - 套件名稱
kinds - 只返回這些型別的物件
recurse - 如果為 true,則包含“子包”
返回:
符合給定標準的檔案物件的 Iterable
拋出:
IOException - 如果發生 I/O 錯誤,或者已經調用了 JavaFileManager.close() 並且無法重新打開此檔案管理器
IllegalStateException - 如果已經調用了 JavaFileManager.close() 並且無法重新打開此檔案管理器

inferBinaryName

public String inferBinaryName(JavaFileManager.Location location,
                              JavaFileObject file)
從介面 JavaFileManager 複製的描述
根據位置推斷檔案物件的二進制名稱。返回的二進制名稱可能不是有效的 JLS 二進制名稱。

指定者:
介面 JavaFileManager 中的 inferBinaryName
參數:
location - 位置
file - 檔案物件
返回:
二進制名稱;如果在給定位置沒有找到檔案物件,則返回 null
拋出:
IllegalStateException - 如果已經調用了 JavaFileManager.close() 並且無法重新打開此檔案管理器

isSameFile

public boolean isSameFile(FileObject a,
                          FileObject b)
從介面 JavaFileManager 複製的描述
比較兩個檔案物件,如果它們表示相同的底層物件,則返回 true。

指定者:
介面 JavaFileManager 中的 isSameFile
參數:
a - 檔案物件
b - 檔案物件
返回:
如果給定的檔案物件表示相同的底層物件,則返回 true
拋出:
IllegalArgumentException - 如果其中一個參數是用另一個檔案管理器創建的,並且此檔案管理器不支持外部檔案物件

handleOption

public boolean handleOption(String current,
                            Iterator<String> remaining)
從介面 JavaFileManager 複製的描述
處理一個選項。如果 current 是此檔案管理器的一個選項,則它將通過 remaining 獲得該選項的所有參數並返回 true,否則返回 false。

指定者:
介面 JavaFileManager 中的 handleOption
參數:
current - 當前選項
remaining - 剩餘選項
返回:
如果由此檔案管理器處理此選項,則返回 true,否則返回 false
拋出:
IllegalArgumentException - 如果錯誤地使用了此檔案管理器的選項
IllegalStateException - 如果已經調用了 JavaFileManager.close() 並且無法重新打開此檔案管理器

hasLocation

public boolean hasLocation(JavaFileManager.Location location)
從介面 JavaFileManager 複製的描述
確定此檔案管理器是否已知某位置。

指定者:
介面 JavaFileManager 中的 hasLocation
參數:
location - 位置
返回:
如果已知該位置,則返回 true

isSupportedOption

public int isSupportedOption(String option)
從介面 OptionChecker 複製的描述
確定是否支持給定選項,如果支持,則返回該選項所使用的參數數量。

指定者:
介面 OptionChecker 中的 isSupportedOption
參數:
option - 選項
返回:
給定選項所使用的參數數量;如果不支持該選項,則返回 -1

getJavaFileForInput

public JavaFileObject getJavaFileForInput(JavaFileManager.Location location,
                                          String className,
                                          JavaFileObject.Kind kind)
                                   throws IOException
從介面 JavaFileManager 複製的描述
獲取輸入的檔案物件,它表示給定位置處指定型別的指定類別。

指定者:
介面 JavaFileManager 中的 getJavaFileForInput
參數:
location - 位置
className - 類別的名稱
kind - 檔案的型別,必須是 SOURCECLASS
返回:
一個檔案物件;如果檔案不存在,則可能返回 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 複製的描述
獲取輸出的檔案物件,它表示給定位置處指定型別的指定類別。

此檔案管理器可以將 sibling 視為對放置輸出位置的提示(可選)。沒有指定此提示的確切語義。除非提供了類別檔案輸出目錄,否則 Sun 的編譯器(例如 javac)將把類別檔案放到與原始源檔案相同的目錄下。要實作此行為,調用此方法時 javac 可以提供原始源檔案作為 sibling。

指定者:
介面 JavaFileManager 中的 getJavaFileForOutput
參數:
location - 位置
className - 類別的名稱
kind - 檔案的型別,必須是 SOURCECLASS
sibling - 用作位置提示的檔案物件,可以為 null
返回:
輸出的檔案物件
拋出:
IllegalArgumentException - 如果 sibling 對於此檔案管理器是未知的,或者位置對於此檔案管理器是未知的並且該檔案管理器不支持未知位置,或者型別無效
IllegalStateException - 已經調用了 JavaFileManager.close() 並且無法重新打開此檔案管理器
IOException - 如果發生 I/O 錯誤,或者已經調用了 JavaFileManager.close() 並且無法重新打開此檔案管理器

getFileForInput

public FileObject getFileForInput(JavaFileManager.Location location,
                                  String packageName,
                                  String relativeName)
                           throws IOException
從介面 JavaFileManager 複製的描述
獲取輸入的檔案物件,它表示給定位置處指定包中的指定相對名稱

如果返回的物件表示類別檔案,則它必須是 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" 的檔案物件。

指定者:
介面 JavaFileManager 中的 getFileForInput
參數:
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 複製的描述
獲取輸出的檔案物件,它表示給定位置處指定包中的指定相對名稱

此檔案管理器可能將 sibling 視為對放置輸出位置的提示(可選)。沒有指定此提示的確切語義。除非提供了類別檔案輸出目錄,否則 Sun 的編譯器(例如 javac)將把類別檔案放到與原始源檔案相同的目錄下。要實作此行為,調用此方法時 javac 可以提供原始源檔案作為 sibling。

如果返回的物件表示類別檔案,則它必須是 JavaFileObject 的一個實例。

非正式情況下,在位置、套件名稱和相對名稱的串聯或 sibling 參數的同級元素中尋找此方法返回的檔案物件。有關範例,請參閱 getFileForInput

指定者:
介面 JavaFileManager 中的 getFileForOutput
參數:
location - 位置
packageName - 套件名稱
relativeName - 相對名稱
sibling - 用作位置提示的檔案物件;可以為 null
返回:
檔案物件
拋出:
IllegalArgumentException - 如果 sibling 對於此檔案管理器是未知的,或者位置對於此檔案管理器是未知的並且該檔案管理器不支持未知位置,或者 relativeName 無效
IllegalStateException - 如果已經調用了 JavaFileManager.close() 並且無法重新打開此檔案管理器
IOException - 如果發生 I/O 錯誤,或者已經調用了 JavaFileManager.close() 並且無法重新打開此檔案管理器

flush

public void flush()
           throws IOException
從介面 JavaFileManager 複製的描述
刷新此檔案管理器直接或間接為輸出打開的所有資源。刷新已關閉的檔案管理器沒有任何效果。

指定者:
介面 Flushable 中的 flush
指定者:
介面 JavaFileManager 中的 flush
拋出:
IOException - 如果發生 I/O 錯誤
另請參見:
JavaFileManager.close()

close

public void close()
           throws IOException
從介面 JavaFileManager 複製的描述
釋放此檔案管理器直接或間接打開的所有資源。這會使得此檔案管理器無效,除非明確允許,否則對此物件上的方法或通過此物件獲取的所有物件進行後續調用都將導致不確定的結果。但是,關閉已經關閉的檔案管理器沒有任何效果。

指定者:
介面 Closeable 中的 close
指定者:
介面 JavaFileManager 中的 close
拋出:
IOException - 如果發生 I/O 錯誤
另請參見:
JavaFileManager.flush()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only