.class
Javaでの意味は?たとえば、 というクラスを作成したとしPrint
ます。何をPrint.class
返しますか?
8 に答える
クラス名の後に記述する.class
と、クラス リテラル (特定のクラスに関する情報を表すオブジェクト) を参照
しjava.lang.Class
ます。
たとえば、クラスが の場合、Print
は実行時Print.class
にクラスを表すオブジェクトです。の任意の (直接) インスタンスのメソッドPrint
によって返されるのと同じオブジェクトです。getClass()
Print
Print myPrint = new Print();
System.out.println(Print.class.getName());
System.out.println(myPrint.getClass().getName());
.class
利用可能なクラスのインスタンスがない場合に使用されます。
.getClass()
利用可能なクラスのインスタンスがある場合に使用されます。
object.getClass()
指定されたオブジェクトのクラスを返します。
例えば:
String string = "hello";
System.out.println(string.getClass().toString());
これは出力されます:
class java.lang.String
これは文字列オブジェクトのクラスです:)
オブジェクトのインスタンスが利用可能な場合、そのクラスを取得する最も簡単な方法は、Object.getClass()
.class
構文_
型が利用可能であるがインスタンスがない場合.class
、型の名前に追加することでクラスを取得できます。これは、プリミティブ型のクラスを取得する最も簡単な方法でもあります。
boolean b;
Class c = b.getClass(); // compile-time error
Class c = boolean.class; // correct
クラスについては、docs.oracle.comを参照してください。
使用可能なインスタンスがない場合は、.class
構文を使用してクラスに対応する Class オブジェクトを取得します。それ以外の場合は、getClass() メソッドを使用して Class オブジェクトを取得できます。プリミティブ データ型のインスタンスがないため、プリミティブ データ型の.class
構文を使用する必要があります。
package test;
public class Test {
public static void main(String[] args)
{
//there is no instance available for class Test, so use Test.class
System.out.println("Test.class.getName() ::: " + Test.class.getName());
// Now create an instance of class Test use getClass()
Test testObj = new Test();
System.out.println("testObj.getClass().getName() ::: " + testObj.getClass().getName());
//For primitive type
System.out.println("boolean.class.getName() ::: " + boolean.class.getName());
System.out.println("int.class.getName() ::: " + int.class.getName());
System.out.println("char.class.getName() ::: " + char.class.getName());
System.out.println("long.class.getName() ::: " + long.class.getName());
}
}
クラス リテラルは、クラス、インターフェイス、配列、またはプリミティブ型の名前、または疑似型 void の後に「.」が続く式です。そしてトークンクラス。JDK 5.0 での変更点の 1 つは、クラス java.lang.Class が汎用でjava.lang.Class Class<T>
あることです。したがって、次のようになります。
Class<Print> p = Print.class;
ここでの参照:
https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html
http://docs.oracle.com/javase/tutorial/extra/generics/literals.html
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.8.2