177

.classJavaでの意味は?たとえば、 というクラスを作成したとしPrintます。何をPrint.class返しますか?

4

8 に答える 8

174

クラス名の後に記述する.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());
于 2013-02-26T00:03:21.833 に答える
63

.class利用可能なクラスのインスタンスがない場合に使用されます。

.getClass()利用可能なクラスのインスタンスがある場合に使用されます。

object.getClass()指定されたオブジェクトのクラスを返します。

例えば:

String string = "hello";
System.out.println(string.getClass().toString());

これは出力されます:

class java.lang.String

これは文字列オブジェクトのクラスです:)

于 2013-02-26T00:08:54.170 に答える
6

オブジェクトのインスタンスが利用可能な場合、そのクラスを取得する最も簡単な方法は、Object.getClass()

.class構文_

型が利用可能であるがインスタンスがない場合.class、型の名前に追加することでクラスを取得できます。これは、プリミティブ型のクラスを取得する最も簡単な方法でもあります。

boolean b;
Class c = b.getClass();   // compile-time error

Class c = boolean.class;  // correct

クラスについては、docs.oracle.comを参照してください。

于 2015-11-05T23:55:08.060 に答える
3

使用可能なインスタンスがない場合は、.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());
       }
    }
于 2016-05-03T11:31:26.137 に答える
1

クラス リテラルは、クラス、インターフェイス、配列、またはプリミティブ型の名前、または疑似型 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

于 2016-10-13T09:02:53.983 に答える