UNOのすべてのオブジェクトはinterfaceで操作するとのこと。
で、オブジェクトのメソッドを呼びたい場合には、事前に適切な型にCastすると。
うげ。
実行時にチェックしないと、ClassCastExceptionですか。。
ここはとっても面倒そう。。
と思いきや、JavaのUNOにはqueryInterface()というメソッドが用意されていると。
いい感じにオブジェクトを取得して、いい感じにCastしたりしてくれると。
ほほー。
で、以下queryInterfaceメソッドを利用して、
DesktopオブジェクトからXComponentLoaderオブジェクトを取得する例。
Object desktop = xRemoteServiceManager.createInstanceWithContext(
"com.sun.star.frame.Desktop", xRemoteContext);
XComponentLoader xComponentLoader = (XComponentLoader)
UnoRuntime.queryInterface(XComponentLoader.class, desktop);
ほほー。
タイプ量が多いっす。。
で、XMultiComponentFactory.createInstanceWithContext()
を使用して、com.sum.star.frame.Desktopサービスを生成。
createInstanceWithContextは、
Object createInstanceWithContext(String serviceName, XComponentContext context)
と定義されている。
で、返されたObjectをqueryInterfaceを使用してCastやらなにやらして、XComponentLoaderを取得と。
すぐに慣れるらしい。
.
0 コメント:
コメントを投稿