- PR -

自力でリフレクション

1
投稿者投稿内容
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-02-06 21:52
こんばんは。

もし、自力でjava.lang.reflectパッケージのクラスが提供
している機能を作成するとしたら、皆さんはどうされるんでしょうか?
また、それは可能だと思いますか?
ソースがないと無理かな...
_________________
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2004-02-06 23:43
1. フィールドへのアクセスは、ObjectOutputStreamに吐き出したデータをバイト列として解析すれば何とかなる。(Serializableである必要がありますが)
2. メソッドへのアクセスは、classファイルをバイト列として解析すれば・・・
3. 更に、2で得たデータからアクセスクラスを動的に生成して・・・

というわけで、ある程度までは不可能ではないでしょう。
でも、大変そうだなぁ・・・
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-02-07 13:05
こんにちは。
ありがとうございます。

実は、違う言語からjavaのリフレクションを実現しようと
考えてたんです。たとえば、javaのソースをファイルとして読み込んで...
でも、coasmさんの話ですとreflectパッケージのクラス類を使わなくても言語がjava
でないと難しいのようですね。むりやりできたとしてもパフォーマンスが
良いわけがない気もしますね。

ありがとうございました。

#呼び捨てのところを修正しました、こめんなさい。

_________________
世界平和を願う!
http://park8.wakwak.com/~chin/

[ メッセージ編集済み 編集者: CHN 編集日時 2004-02-08 01:49 ]
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2004-02-08 01:36
いえ、私が「Javaでやる」ことを前提に考えてしまっただけです。
他の言語を使うと難しくなる面もありますが、逆に簡単になる面もあるでしょう。
(オブジェクトのデータを単なるバイト列としてアクセスするとか)

それと、「javaのソースをファイルとして読む」よりは「classファイルを読む」方が、
おそらく何倍も簡単になるのはないかと。
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-02-08 01:59
ありがとうございます。

classファイルの中身ってまだ詳しくみたことがないです。
でも確かになんとなく、言われたようにできそうな気もしてきました。
パフォーマンスが問題になりそうなところが引っかかりますが。

_________________
世界平和を願う!
http://park8.wakwak.com/~chin/

[ メッセージ編集済み 編集者: CHN 編集日時 2004-02-08 02:11 ]
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-02-12 15:17
http://jakarta.apache.org/bcel/index.html

これが参考になるのではないでしょうか。
RubyのVMの実装などを参考にしてもよいかもしれませんね。
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-02-12 15:59
ありがとうございます。
要するに、自作ソフトでパッケージ名を入力したらクラスが出てくる、
クラスを入力したらメンバーがでてくるってことがやりたいわけですね。
しかし、使っている言語がJavaではないため、非常にしんどいです...

しかし、英語ですね...
英語を使わないときは英語が得意ですが、いざ、使うとなると
よくわかりまへんってことに...すんません。

なんとか辞書を見ながらやってみます。
ありがとうございます。

_________________
1

スキルアップ/キャリアアップ(JOB@IT)