- PR -

クラス名.class について

1
投稿者投稿内容
ボア
ベテラン
会議室デビュー日: 2002/05/22
投稿数: 78
投稿日時: 2004-02-05 13:13
FAQ かもしれませんが、探しきれなかったので。

クラス名.class とすることで、指定したクラスの Class オブジェクトが
取れますが、これは言語仕様上どのような扱いなのでしょうか?
Object クラスのプロパティなのかとも思ったのですが、それらしいものは
無さそうですし。

Sun の言語仕様
http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html
のどこらへんに記述があるか教えてください。
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2004-02-05 13:51
15.8.2 Class Literals
A class literal is an expression consisting of the name of a class, interface, array, or primitive type followed by a `.' and the token class. The type of a class literal is Class. It evaluates to the Class object for the named type (or for void) as defined by the defining class loader of the class of the current instance.

http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#251530

これですね。
nil
会議室デビュー日: 2003/06/17
投稿数: 14
投稿日時: 2004-02-05 13:57
javapを使用すればより興味深い何かに気づくかもしれません:-)
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-02-05 23:41
引用:

nilさんの書き込み (2004-02-05 13:57) より:
javapを使用すればより興味深い何かに気づくかもしれません



Class#forName()と解釈されるだけの、単なるシンタックスシュガーであった、というやつですね。Obfuscatorツールの一部と相性が悪いそうで
ボア
ベテラン
会議室デビュー日: 2002/05/22
投稿数: 78
投稿日時: 2004-02-06 09:05
引用:

Class#forName()と解釈されるだけの、単なるシンタックスシュガーであった、というやつですね。



なるほどね。まさか内部で static メソッドを作っていたとは思わなかったです。
コンパイル時に Class の存在チェックをしてくれる分、Class#forName より
いいですね。もちろん実行環境の classpath が通っていることが前提ですが。。。
1

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