- - PR -
クラス名.class について
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-02-05 13:13
FAQ かもしれませんが、探しきれなかったので。
クラス名.class とすることで、指定したクラスの Class オブジェクトが 取れますが、これは言語仕様上どのような扱いなのでしょうか? Object クラスのプロパティなのかとも思ったのですが、それらしいものは 無さそうですし。 Sun の言語仕様 http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html のどこらへんに記述があるか教えてください。 | ||||
|
投稿日時: 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 これですね。 | ||||
|
投稿日時: 2004-02-05 13:57
javapを使用すればより興味深い何かに気づくかもしれません:-)
| ||||
|
投稿日時: 2004-02-05 23:41
Class#forName()と解釈されるだけの、単なるシンタックスシュガーであった、というやつですね。Obfuscatorツールの一部と相性が悪いそうで | ||||
|
投稿日時: 2004-02-06 09:05
なるほどね。まさか内部で static メソッドを作っていたとは思わなかったです。 コンパイル時に Class の存在チェックをしてくれる分、Class#forName より いいですね。もちろん実行環境の classpath が通っていることが前提ですが。。。 | ||||
1
