ClassLoader.DefineClass 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| DefineClass(Byte[], Int32, Int32) |
已淘汰.
將一個位元組陣列轉換成類別 |
| DefineClass(String, ByteBuffer, ProtectionDomain) |
將 a |
| DefineClass(String, Byte[], Int32, Int32) |
將一個位元組陣列轉換成類別 |
| DefineClass(String, Byte[], Int32, Int32, ProtectionDomain) |
將一個位元組陣列轉換成類別的 |
DefineClass(Byte[], Int32, Int32)
警告
deprecated
將一個位元組陣列轉換成類別 Class的實例。
[Android.Runtime.Register("defineClass", "([BII)Ljava/lang/Class;", "")]
[System.Obsolete("deprecated")]
protected Java.Lang.Class? DefineClass(byte[]? b, int off, int len);
[<Android.Runtime.Register("defineClass", "([BII)Ljava/lang/Class;", "")>]
[<System.Obsolete("deprecated")>]
member this.DefineClass : byte[] * int * int -> Java.Lang.Class
參數
- b
- Byte[]
組成類別資料的位元組。 在 的位置中位off元組應具有有效類別檔案的格式,該格式依off+len-1據引用<Java 虛擬機規範>/引用<。>
- off
- Int32
類別資料的 b 起始偏移量
- len
- Int32
類別資料的長度
傳回
Class由指定的類別資料建立的物件
- 屬性
例外狀況
如果 classRep 不包含有效類別。
若 offset , length 或 offset + length 大於 的 classRep長度。
備註
將一個位元組陣列轉換成類別 Class的實例。 在使用之前 Class ,必須先解決。 此方法被棄用,取而代之的是以二進位名稱作為首參數且安全性更高的版本。
此會員已被棄用。 已由 #defineClass(String, byte[], int, int) defineClass(String, byte[], int, int) 取代
Java 文件 java.lang.ClassLoader.defineClass(byte[], int, int)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
DefineClass(String, ByteBuffer, ProtectionDomain)
將 a java.nio.ByteBuffer ByteBuffer 轉換為類別 Class的實例,給定 ProtectionDomain。
[Android.Runtime.Register("defineClass", "(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;", "")]
protected Java.Lang.Class? DefineClass(string? name, Java.Nio.ByteBuffer? b, Java.Security.ProtectionDomain? protectionDomain);
[<Android.Runtime.Register("defineClass", "(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;", "")>]
member this.DefineClass : string * Java.Nio.ByteBuffer * Java.Security.ProtectionDomain -> Java.Lang.Class
參數
- name
- String
預期中的二進位名稱。 或若未知,則屬該類別null
組成類別資料的位元組。 從位置到位b.position()元組的位元組應符合有效類別檔案格式,該格式由b.position() + b.limit() -1引用<Java 虛擬機器規範>/引用<所>定義。
- protectionDomain
- ProtectionDomain
該類的 , ProtectionDomain 或 null。
傳回
Class由資料所產生的物件,以及ProtectionDomain。
- 屬性
例外狀況
如果 b 不包含有效類別。
若 className 不等於所 b包含的類別名稱。
備註
將 a java.nio.ByteBuffer ByteBuffer 轉換為類別 Class的實例,給定 ProtectionDomain。 若給定 ProtectionDomain 為 null,則將依據文件 #defineClass(String, byte[], int, int)中指定,為類別指派一個預設保護域。 在使用該類別之前,必須先解決它。
關於套件中定義的第一個類別、決定該套件憑證集合的規則、類別名稱的限制以及類別定義的套件,與文件 #defineClass(String, byte[], int, int, ProtectionDomain)中所規定的相同。
以 cl.defineClass(name,bBuffer,pd) 形式呼叫此方法,結果與語句完全相同
...<br> byte[] temp = new byte[bBuffer.{@link java.nio.ByteBuffer#remaining remaining}()];<br> bBuffer.{@link java.nio.ByteBuffer#get(byte[]) get}(temp);<br> return {@link #defineClass(String, byte[], int, int, ProtectionDomain) cl.defineClass}(name, temp, 0, temp.length, pd);<br>
已在1.5中新增。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
DefineClass(String, Byte[], Int32, Int32)
將一個位元組陣列轉換成類別 Class的實例。
[Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BII)Ljava/lang/Class;", "")]
protected Java.Lang.Class? DefineClass(string? name, byte[]? b, int off, int len);
[<Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BII)Ljava/lang/Class;", "")>]
member this.DefineClass : string * byte[] * int * int -> Java.Lang.Class
參數
- name
- String
類別的期望二進位名稱,或 null 若未知則為該類別
- b
- Byte[]
組成類別資料的位元組。 在 的位置中位off元組應具有有效類別檔案的格式,該格式依off+len-1據引用<Java 虛擬機規範>/引用<。>
- off
- Int32
類別資料的 b 起始偏移量
- len
- Int32
類別資料的長度
傳回
由 Class 指定的類別資料建立的物件。
- 屬性
例外狀況
如果 classRep 不包含有效類別。
若 offset , length 或 offset + length 大於 的 classRep長度。
備註
將一個位元組陣列轉換成類別 Class的實例。 在使用之前 Class ,必須先解決。
此方法會為新定義的類別指派預設 java.security.ProtectionDomain ProtectionDomain 值。 實際上,當 ProtectionDomain 被調用時,會獲得與回傳 java.security.Policy#getPermissions(java.security.CodeSource) Policy.getPolicy().getPermissions(new CodeSource(null, null)) 相同的權限集合。 預設保護域會在第一次呼叫時 #defineClass(String, byte[], int, int) defineClass建立,並在後續呼叫中重複使用。
要將 特定 ProtectionDomain 指派給類別,請使用 #defineClass(String, byte[], int, int, java.security.ProtectionDomain) defineClass 將 a ProtectionDomain 作為其參數之一的方法。
此方法在此類別載入器中定義一個套件,對應於該 Class 套件(若該套件尚未在此類別載入器中定義)。 定義套件的名稱源自於由位元組陣列 b指定的類別二進位名稱。 定義包的其他性質由 所指定。Package
在 1.1 版本中加入。
Java 文件 java.lang.ClassLoader.defineClass(java.lang.String, byte[], int, int)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
DefineClass(String, Byte[], Int32, Int32, ProtectionDomain)
將一個位元組陣列轉換成類別的 Class實例,給定 ProtectionDomain。
[Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;", "")]
protected Java.Lang.Class? DefineClass(string? name, byte[]? b, int off, int len, Java.Security.ProtectionDomain? protectionDomain);
[<Android.Runtime.Register("defineClass", "(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;", "")>]
member this.DefineClass : string * byte[] * int * int * Java.Security.ProtectionDomain -> Java.Lang.Class
參數
- name
- String
類別的期望二進位名稱,或 null 若未知則為該類別
- b
- Byte[]
組成類別資料的位元組。 在 的位置中位off元組應具有有效類別檔案的格式,該格式依off+len-1據引用<Java 虛擬機規範>/引用<。>
- off
- Int32
類別資料的 b 起始偏移量
- len
- Int32
類別資料的長度
- protectionDomain
- ProtectionDomain
本級的ProtectionDomain
傳回
Class由資料所產生的物件,以及ProtectionDomain。
- 屬性
例外狀況
如果 classRep 不包含有效類別。
若 offset , length 或 offset + length 大於 的 classRep長度。
若 className 不等於所 classRep包含的類別名稱。
備註
將一個位元組陣列轉換成類別的 Class實例,給定 ProtectionDomain。
若給定 ProtectionDomain 為 null,則將依據文件 #defineClass(String, byte[], int, int)中指定,為類別指派一個預設保護域。 在使用該類別之前,必須先解決它。
套件中定義的第一個類別決定了該套件中所有後續類別必須包含的精確憑證集合。 課程的證書集是從 java.security.CodeSource CodeSource 課程內部 ProtectionDomain 取得的。 任何加入該套件的類別都必須包含相同的憑證集合,否則會拋出 a SecurityException 。 注意,若 name 為 null,則不執行此檢查。 你應該總是傳遞你定義的類別的二進位名稱以及位元組。 這確保你定義的類別確實是你認為的類別。
此方法在此類別載入器中定義一個套件,對應於該 Class 套件(若該套件尚未在此類別載入器中定義)。 定義套件的名稱源自於由位元組陣列 b指定的類別二進位名稱。 定義包的其他性質由 所指定。Package
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。