Javaで可変メソッドな話

Javaで可変メソッドな話 – …の話をしよう。実はJavaでの開発経験は乏しいのですが、このところWebアプリケーション開発でJavaをゴリゴリ書いてます。

昨今話題の「静的型付け言語 vs 動的型付け言語」になぞらえば、私は静的より圧倒的に動的の経験が豊富なので、どうも型ありきな思考に慣れていないようです。なんにつけいちいち「型」の壁にぶち当たってます(苦笑。

ふと思ったのですが、静的の方が処理やロジックの一般化あるいは共通化、汎用化といったことが苦手なのでしょうかね?
Javaに限った話なのか、あるいは私のアプローチの問題なのかもしれませんが…。

たとえば。

Beans ←→ DB間のDAO&O/Rマッパーを作るとします。
DBテーブル毎に似たような処理がたくさんあるのは気持ち悪いので、共通の処理を汎用化した基底クラスを作って継承することにします。

この場合、プロパティ名やアクセサ・メソッド名の可変に対応させる必要があります。

この手の仕組みはPHPではサックリと作れます。もともと強力な可変プロパティ、可変メソッドの仕組みが備わっていますし、なにより型が無いのが楽ちんです。

ところがJavaで同じことをしようとすると、引数の型の縛りを突破するのに四苦八苦。結局、Java型とJDBC型のマッピングを作るという若干泥臭い方法で対処しましたが、そりゃもうリフレクタが大活躍です(汗

とりあえず簡単なO/Rマッパーはできました。

次にリクエストパラメータ→Beansの処理も汎用化しようとしたら、さらにドハマリ(苦。
リクエストパラメータは全てStringですのでBeansのプロパティにセットするには型変換をせにゃならないわけです。キーッ!!ってなりつつBeansプロパティの型を調べて、型毎にStringから変換する処理を作って…。

…とまあ、そんなこんなですっかりJavaな日々を満喫してます(笑

Javaなみなさんはこういう時どうしてるんでしょう?
まさかそもそも汎用化なんかせず、似たような処理をたくさん書いちゃうんでしょうか?
すっごく疑問です(汗

Bookmark the permalink.

Comments are closed.