« directed |Main| XML-RPCできあがり »

« directed | log | XML-RPCできあがり »

XML-RPC→リフレクション

当初、Jythonでやろうと思っていたことが、Javaだけでもリフレクションを使えばできると気がついたのでJavaだけでやる方針に変更しました。

あー、追加した頂点にいろんなパラメータをセットするために、その頂点のメソッドを呼び出すところでつまずきました。そうか、Javaは名前だけでメソッドをゲットできないんですな。シグネチャが違えば同じ名前で複数のメソッドを作れるから。Pythonとはそこがちょっと違う。XML-RPCの引数にシグネチャまで指定するのは変なので、ここの頂点が持つメソッドの引数はObject1個に固定してしまいましょう。たくさん渡したければ配列なりハッシュなりを渡せばいいだけですから。

ははーん。InvocationTargetExceptionが起きると思ったら、XML-RPCで配列を投げるとJava側で受け取るのはVectorなのか。int[]にキャストしようとして怒られた。まぁ、そりゃそうか、要素にObjectじゃないものが混ざっているとやっかいだろうしな。ということはintもIntegerオブジェクトになっているんだろうな。

結局ColorHolderにVectorを引数に取るgetメソッドを追加。括弧だらけ。Jythonを使っていればもっと楽ちんだったのですが…まぁ、そんなに大変でもないからいいや。でもとりあえずXML-RPCで好きな色の丸い頂点を追加することはできるようになりました。setBackgroundってメソッド名にしてあるけども、引数がObjectとかいろいろ制約があるので一般的なsetterみたいな名前じゃなくてrpc_bgcolorとかにしましょうかね。

    public static Color get(Vector rgb){
    	return get(
    			((Integer)rgb.get(0)).intValue(),
    			((Integer)rgb.get(1)).intValue(),
    			((Integer)rgb.get(2)).intValue());
    }

トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/87

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.