2011-09-13 2 views
4

JavaのFoo.class同様に、ScalaのclassOf[Foo]リテラルクラス構文は、問題のクラスについての反射的なビューを返します。"method/field"リテラルをJava/Scalaのクラスリテラルに匹敵させることは可能でしょうか?

方法とフィールドに匹敵する反射的アクセスを得るために、.method/.fieldまたはmethodOf[]/fieldOf[]のようなものを提供することは可能でしょうか?

これはJava/Scalaでどのように実装されますか?

Javaの場合、これは言語の変更(非常にありそうもない)またはバイトコードツール/ AspectJでのいくつかのウィザードを必要とすると思いますが、Scalaでは暗黙の変換で実装することはおそらく可能です。

答えて

8

はい、いいえ。ポールフィリップスは確かにこのようなことに関心を示しています。そして、今後のスカラ反射について、トランクで現在起こっていることがたくさんあります。

提案されている構文のようなものは表示されません。メソッドはファーストクラスのコンストラクトではなく、したがって、そのクラスを含んで参照されるだけです。しかし、我々はは、デフォルトのパラメータ、パラメータ名など、反射を介してメンバーにアクセスするための素敵なスカラーフレンドリーな方法になるでしょう。

2

私はどこで、 Javaクラスを入力として使用し、メタクラスを生成します。つまり、対象クラスのすべてのフィールドとメソッドへの参照であった静的フィールドがありました。それは確かにあなたが探しているものほどエレガントではありませんが、潜在的に有用な魔法のビットとして私を打った。

関連する問題