ActiveX 用戶端程式設計、JClassProxy 和 JObjectProxy 類別
用來存取 Java™ 類別和物件的大部分作業都是使用 JClassProxy 和 JObjectProxy 物件來處理。
JClassFactory 是用來存取大部分「Java 虛擬機器 (JVM)」特性的物件。 此物件會處理 JVM 起始設定、存取類別及建立類別實例 (物件)。 使用 JClassProxy 和 JObjectProxy 物件來存取大部分 Java 類別和物件:
- XJBInit (String astrJavaParameterArray ())
使用字串陣列來起始設定 JVM 環境,這些字串代表您通常傳送至 java.exe 檔案的指令行參數。
如果 XJBInit () 字串陣列中有無效參數,則會顯示下列錯誤:錯誤: 0x6002 呼叫 XJBInit () 時 "XJBJNI ::Init () Failed to create VM"
如果您已啟用 C++ 記載,則活動日誌會顯示無效參數。 - JClassProxy FindClass (String strClassName)
使用現行執行緒類別載入器來載入指定的完整類別名稱,並傳回代表 Java 類別物件的 JClassProxy 物件。
- JObjectProxy NewInstance ()使用提供的參數來呼叫 Class 建構子,為指定的 JClassProxy 物件建立 Class 實例。 如需使用 JMethodArgs 方法的相關資訊,請參閱 ActiveX 至 EJB 橋接器,並呼叫 Java 方法。
JObjectProxy NewInstance(JClassFactory obj, Variant vArg1, Variant vArg2, Variant vArg3, ...) JObjectProxy NewInstance(JClassFactory obj, JMethodArgs args) - JMethodArgs GetArgsContainer ()
傳回 JMethodArgs 物件 (類別實例)。
您可以從 JClassFactory 建立 JClassProxy 物件。FindClass () 方法,以及從通常會傳回「Java 類別」物件的任何 Java 方法呼叫。 您可以使用此物件,就像您可以直接存取 Java 類別物件一樣。 所有類別 static 方法和欄位都如同 java.lang.Class 方法一樣可供存取。 如果反映的使用者類別的 static 方法名稱與 java.lang.Class 的 static 方法名稱 (例如 getName ()) 之間發生衝突,則會先執行反映的 static 方法。
例如,下列是稱為 getName () 的靜態方法。 java.lang.Class 物件也有一個稱為 getName () 的方法:- 在 Java 中:
class foo{ foo(){}; public static String getName(){return "abcdef";} public static String getName2(){return "ghijkl";} public String toString2(){return "xyz";} } - 在 Visual Basic 中:
... Dim clsFoo as Object set clsFoo = oXJB.FindClass(foo
) clsFoo.getName() ' Returnsabcdef
from the static foo class clsFoo.getName2() ' Returnsghijkl
from the static foo class clsFoo.toString() ' Returnsclass foo
from the java.lang.Class object. oFoo = oXJB.NewInstance(clsFoo) oFoo.toString() ' Returns some text from the java.lang.Object's ' toString() method which foo inherits from. oFoo.toString2() ' Returnsxyz
from the foo class instance您可以從 JClassFactory 建立 JObjectProxy 物件。NewInstance () 方法,可從通常傳回「類別」實例物件的任何 Java 方法呼叫建立。 您可以使用這個物件,就像您可以直接存取 Java 物件一樣,並且可以存取物件的所有 static 方法和欄位。 所有物件實例方法和欄位都可存取 (包括可透過繼承來存取的那些方法和欄位)。
JMethodArgs 物件是從 JClassFactory 建立的。GetArgsContainer () 方法。 請使用這個物件作為方法和建構子引數的儲存器。 在呼叫方法時置換物件類型時 (例如,將 java.lang.String JProxyObject 類型傳送至通常採用 java.lang.Object 類型的建構子時) ,您必須使用這個物件。
您可以使用兩組方法將引數新增至集合: 新增 及 設定。 您可以使用 新增 ,以宣告引數的順序來新增引數。 或者,您可以使用 設定 ,根據引數在引數清單中的位置 (其中第一個引數位於位置 1) 來設定引數。
比方說,如果您有一個 Java 物件 Foo 採用 Foo (int , String , Object) 建構子,您可以使用 JMethodArgs 物件,如下列程式碼擷取所示:... Dim oArgs as Object set oArgs = oXJB.GetArgsContainer() oArgs.AddInt(CLng(12345)) oArgs.AddString(Apples
) oArgs.AddObject(java.lang.Object
, oSomeJObjectProxy) Dim clsFoo as Object Dim oFoo as Object set clsFoo = oXJB.FindClass(com.mypackage.foo
) set oFoo = oXJB.NewInstance(clsFoo, oArgs) ' To reuse the oArgs object, just clear it and use the add method ' again, or alternatively, use the Set method to reset the parameters ' Here, we will use Set oArgs.SetInt(1, CLng(22222)) oArgs.SetString(2,Bananas
) oArgs.SetObject(3,java.lang.Object
, oSomeOtherJObjectProxy) Dim oFoo2 as Object set oFoo2 = oXJB.NewInstance(clsFoo, oArgs)
- 在 Java 中:
- AddObject (String strObjectTypeName , Object oArg)將任意物件新增至下一個可用位置中的引數儲存器,並將物件強制轉型為第一個參數中指定的類別名稱。 陣列是使用 traditional [] 語法來指定; 例如:
或AddObject(java.lang.Object[][]
, oMy2DArrayOfFooObjects)AddObject(int[]
, oMyArrayOfInts) - AddByte (Byte byteArg)
將基本位元組值新增至下一個可用位置中的引數儲存器。
- AddBoolean (布林 bArg)
將基本布林值新增至下一個可用位置中的引數儲存器。
- AddShort (Integer iArg)
將基本簡短值新增至下一個可用位置中的引數儲存器。
- AddInt (Long lArg)
將基本整數值新增至下一個可用位置中的引數儲存器。
- AddLong (貨幣 cyArg)
將基本 long 值新增至下一個可用位置中的引數儲存器。
- AddFloat (單一 fArg)
將基本浮點值新增至下一個可用位置中的引數儲存器。
- AddDouble (Double dArg)
將初始倍精準數值新增至下一個可用位置中的引數儲存器。
- AddChar (String strArg)
將初始字元值新增至下一個可用位置中的引數儲存器。
- AddString (String strArg)
將字串形式的引數新增至下一個可用位置的引數儲存器。
- SetObject (Integer iArgPosition , String strObjectTypeName , Object oArg)將任意物件新增至指定位置中的引數儲存器,將它強制轉型為第二個參數中指定的類別名稱或初始類型名稱。 陣列是使用 traditional [] 語法來指定; 例如:
或SetObject(1,java.lang.Object[][]
, oMy2DArrayOfFooObjects)SetObject(2,int[]
, MyArrayOfInts) - SetByte (Integer iArgPosition , Byte byteArg)
將基本位元組值設為指定位置中的引數儲存器。
- SetBoolean (Integer iArgPosition , Boolean bArg)
將基本布林值設為指定位置中的引數儲存器。
- SetShort (Integer iArgPosition , Integer iArg)
將基本短值設為指定位置中的引數儲存器。
- SetInt (Integer iArgPosition , Long lArg)
將初始 int 值設為指定位置中的引數儲存器。
- SetLong (Integer iArgPosition , Currency cyArg)
將初始 long 值設為指定位置中的引數儲存器。
- SetFloat (Integer iArgPosition , Single fArg)
將初始浮點值設為指定位置中的引數儲存器。
- SetDouble (Integer iArgPosition , Double dArg)
將初始倍精準數值設為指定位置中的引數儲存器。
- SetChar (Integer iArgPosition , String strArg)
將初始字元值設為指定位置中的引數儲存器。
- SetString (Integer iArgPosition , String strArg)
將 java.lang.String 值設為指定位置中的引數儲存器。
- 物件項目 (整數 iArgPosition)
傳回特定引數位置的引數值。
- 清除 ()
從儲存器中移除所有引數,並將下一個可用的位置重設為一個。
- 長計數 ()
傳回儲存器中的引數數目。