[out] Parametertlb2java maps COM methods to Java methods with the same
name. If name collisions occur you can use the -rename option. Java does not have a
pass-by address syntax. To support COM methods that have
[out] parameters, tlb2java generates an array type
for [out] parameters. So, the pVal
parameter in this IDL fragment:
GetBSTR([out] BSTR *pVal)
gets generated with this Java signature:
public void GetBSTR(/*[out]*/ String[] p0) {
Furthermore, the tlb2java generated code expects you to pass
an array of size one as the parameter to receive the
output. Below are some example calls to
GetBSTR. Notice, if you pass null to
the method, you will receive a COM exception.
private void useDual(Dual dual) {
String[] out_v = { null };
dual.GetBSTR(out_v);
System.out.println(out_v[0]);
String[] out_v2 = new String[1];
dual.GetBSTR(out_v);
System.out.println(out_v[0]);
try {
dual.GetBSTR(null);
} catch (COMException e) {
assertEquals("The parameter is incorrect.", e.getMessage());
}
}