是什么.class
意味着在Java中? 例如,如果我创建了一个名为类Print
。 是什么Print.class
返回?
Answer 1:
当你写.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());
Answer 2:
当没有可用的类的实例。类使用。
当有可用的类的一个实例.getClass()被使用。
object.getClass()返回类的给定对象。 例如:
String string = "hello";
System.out.println(string.getClass().toString());
这将输出
class java.lang.String
这是类String对象的:)
Answer 3:
如果一个对象的实例可用,则让同级车中最简单的方法是调用Object.getClass()
该.class
语法
如果类型是可用的,但没有实例,然后就可以通过追加来获取类.class
的类型的名称。 这也是以获得类为基本类型的最简单的方法。
boolean b;
Class c = b.getClass(); // compile-time error
Class c = boolean.class; // correct
请参阅: docs.oracle.com有关类
Answer 4:
只是为了澄清,这”的.class'的方法是不是指你编译Java代码也不是OOP理论课与对象的概念之间的混乱后,看到的字节码文件。
这”的.class'的方法是用Java用于代码反思。 一般来说,你可以收集你的类元数据,如全限定类名,常量的列表,公共领域的名单,等等,等等。
检查这些链接(上面已经提到)来获取所有的细节:
https://docs.oracle.com/javase/tutorial/reflect/class/classNew.html
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html
通常情况下,你不打算使用反射时,马上开始建立你的项目。 这是,你知道你试图管理已经工作的代码之后需要的东西。 很多时候,你需要用它来管理你的程序的多个实例。 也许你要找出每一个特定的“克隆”,以确定如果事情已经定义,或计数的功能的数量,或者只是简单地记录你的类的特定实例的详细信息。
Answer 5:
如果没有可用的实例,然后.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());
}
}
Answer 6:
我认为这里的关键是理解一个类和对象之间的区别。 对象是类的实例。 但是,在一个完全面向对象的语言, 类也是一个对象 。 因此调用.class
获取参照该类别,然后可以被操纵的对象类。
Answer 7:
一类文字是由类,接口,数组或基本类型或伪型空隙,随后的名称的表达“” 和令牌类。 之一在JDK 5.0的变化是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