2013-02-26 5 views
17

.classの意味は、たとえばMyClass.classですか?私はあなたがクラスの名前とその静的なフィールドやメソッドにアクセスするために使用されているポイントは、 '。クラス'に関連していないことを理解しています。クラス名の後の.classの意味

+5

スペイン語のネイティブスピーカーとして、私は人々がこのような場合にGoogle Translatorにどのように彼らの希望を伝えるのか恥ずかしいと感じています。 –

+0

debemos culpar google translate entonces。 – irreputable

+0

他のすべての成果にもかかわらず、私たちはまだ世界を言語と理解に結びつける道を描いていないことに失望します。 –

答えて

10

SomeClass.classは、Class<SomeClass>タイプreflection APIを使用したプログラミング。

クラスのインスタンスがinstance.getClass()の場合、同じタイプが得られます。

documentation hereをチェックアウトすることができます。たとえば、次のことができます。

  • は、
  • は、クラスの名前を取得するクラスの新しいインスタンスを作成するためのコンストラクタを取得し、フィールドやメソッドの名前、注釈など
  • のinvokeメソッドを取得しますあなたは、クラス名の後.classを書くときなど、スーパークラス、パッケージ、
5

、それは与えられたクラスを表すClassオブジェクトは(正式に、それは文字通りの名前のクラスである)を参照します。 NombreClase.classのタイプはClass<NombreClase>です。

など、NombreClase.classは実行時にクラスNombreClaseを表すオブジェクトです。 NombreClaseの任意の(直接の)インスタンスのgetClass()メソッドによって返されるのは同じオブジェクトです。

NombreClase obj = new NombreClase(); 
System.out.println(NombreClase.class.getName()); 
System.out.println(obj.getClass().getName()) 
3

あなたはそのクラスオブジェクトのインスタンスを取得するために、任意のクラスの名前に.classを追加することができます。

Integer.classを使用すると、型付きクラスオブジェクトであるClass<Integer>のインスタンスが参照されます。

私はいつも、これがコンパイラによって追加されたフィールドメンバーだと思っていましたが、実際には構文的な砂糖のように見えます。

+4

静的フィールドにアクセスする前にクラスが必要です。クラスがフィールドの場合は循環します。実際には、 'A.class'は単に' Class.forName( "A") 'にコンパイルされているので、何も魔法のようにはなりません。 – irreputable

+0

クール...ありがとう! – jahroy

関連する問題