- - PR -
自力でリフレクション
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-02-06 21:52
こんばんは。
もし、自力でjava.lang.reflectパッケージのクラスが提供 している機能を作成するとしたら、皆さんはどうされるんでしょうか? また、それは可能だと思いますか? ソースがないと無理かな... _________________ |
|
投稿日時: 2004-02-06 23:43
1. フィールドへのアクセスは、ObjectOutputStreamに吐き出したデータをバイト列として解析すれば何とかなる。(Serializableである必要がありますが)
2. メソッドへのアクセスは、classファイルをバイト列として解析すれば・・・ 3. 更に、2で得たデータからアクセスクラスを動的に生成して・・・ というわけで、ある程度までは不可能ではないでしょう。 でも、大変そうだなぁ・・・ |
|
投稿日時: 2004-02-07 13:05
こんにちは。
ありがとうございます。 実は、違う言語からjavaのリフレクションを実現しようと 考えてたんです。たとえば、javaのソースをファイルとして読み込んで... でも、coasmさんの話ですとreflectパッケージのクラス類を使わなくても言語がjava でないと難しいのようですね。むりやりできたとしてもパフォーマンスが 良いわけがない気もしますね。 ありがとうございました。 #呼び捨てのところを修正しました、こめんなさい。 _________________ 世界平和を願う! http://park8.wakwak.com/~chin/ [ メッセージ編集済み 編集者: CHN 編集日時 2004-02-08 01:49 ] |
|
投稿日時: 2004-02-08 01:36
いえ、私が「Javaでやる」ことを前提に考えてしまっただけです。
他の言語を使うと難しくなる面もありますが、逆に簡単になる面もあるでしょう。 (オブジェクトのデータを単なるバイト列としてアクセスするとか) それと、「javaのソースをファイルとして読む」よりは「classファイルを読む」方が、 おそらく何倍も簡単になるのはないかと。 |
|
投稿日時: 2004-02-08 01:59
ありがとうございます。
classファイルの中身ってまだ詳しくみたことがないです。 でも確かになんとなく、言われたようにできそうな気もしてきました。 パフォーマンスが問題になりそうなところが引っかかりますが。 _________________ 世界平和を願う! http://park8.wakwak.com/~chin/ [ メッセージ編集済み 編集者: CHN 編集日時 2004-02-08 02:11 ] |
|
投稿日時: 2004-02-12 15:17
http://jakarta.apache.org/bcel/index.html
これが参考になるのではないでしょうか。 RubyのVMの実装などを参考にしてもよいかもしれませんね。 |
|
投稿日時: 2004-02-12 15:59
ありがとうございます。
要するに、自作ソフトでパッケージ名を入力したらクラスが出てくる、 クラスを入力したらメンバーがでてくるってことがやりたいわけですね。 しかし、使っている言語がJavaではないため、非常にしんどいです... しかし、英語ですね... 英語を使わないときは英語が得意ですが、いざ、使うとなると よくわかりまへんってことに...すんません。 なんとか辞書を見ながらやってみます。 ありがとうございます。 _________________ |
1
