私はJavaで私の最初の本当のプロジェクトに取り組んでいます。私は言語に慣れ始めていますが、私は動的言語の経験が豊富です。Javaメタプログラミング
私は次のように振る舞うクラスがあります。
class Single
{
public void doActionA() {}
public void doActionB() {}
public void doActionC() {}
}
をそして私は(具体的には、これらのクラスの集合体として機能SingleList
クラス2Dスプライトライブラリのためだ、と」しています「行動」は、回転、せん断、スケールなどのあらゆる種類の変換です。私は、次の操作を実行できるようにしたい:
class SingleList
{
public void doActionA() {
for (Single s : _innerList) {
s.doActionA();
}
}
... etc ...
}
は単に内側のリストの各メンバーにメソッド(またはメソッドの知られているリスト)を延期する方法はありますか?どの方法でも、各メソッドを具体的にリストする必要はなく、各内部メンバーをループして手動で適用できますか?
方法を少し難しくするために、方法はさまざまですが、すべてが戻り値の型 "void"です。
私はあなたが実行時にメソッドを呼び出すことができますJavaリフレクション、見てみることができると思います。 – Alvin
しかし、私はまだ、すべてのメソッドスタブをSingleListクラスで生成する必要があります。私はキャッチオール呼び出しメソッドとして機能するソリューションを探しています。 PHPやpython getattrでの呼び出しとほとんど同じです。 – efritz
ああ、あなたは、リフレクションを使ってSingleList.get( "someAttr")を行うことができます。リフレクションはあなたのためにgetSomeAttr()メソッドを呼び出します。あなたはGoogleの "org.springframework.beans.BeanUtils"を使うことができます。誰も私にそれを打ち負かさなければ正式な答えとしての例を書きます。 – Alvin