Java中的.class是什么意思?

Qui*_*Wei 142 java methods class

.classJava 中的含义是什么?例如,如果我创建了一个名为的类Print.什么Print.class回报?

Jav*_*ier 137

当你写.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());
Run Code Online (Sandbox Code Playgroud)

  • @Kevin请参阅[java.lang.Class]的API文档(http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html). (7认同)
  • 一个类对象可以做些什么? (2认同)
  • 那么`Print.class`的类型是什么? (2认同)
  • @ZhipengYANG,类型是`Class<Print>` (2认同)

chr*_*her 49

当没有可用类的实例时使用.class.
当有一个类的实例可用时,使用.getClass().

object.getClass()返回给定对象的类.例如:

String string = "hello";
System.out.println(string.getClass().toString());
Run Code Online (Sandbox Code Playgroud)

这将输出

class java.lang.String
Run Code Online (Sandbox Code Playgroud)

这是字符串对象的类:)

  • `getClass()`仅在你有一个指向类对象的引用时才有用.即使该类没有实例,也可以使用`ClassName.class`.例如,考虑`Math.class`.每种情况都适用于某些情况. (7认同)
  • 精彩的解释。说到重点。喜欢你如何识别“.class”和“.getClass()”之间的区别。 (2认同)

And*_*rew 6

如果对象的实例可用,则获取其Class的最简单方法是调用 Object.getClass()

.class语法

如果类型可用但没有实例,则可以通过附加.class类型名称来获取类.这也是获取基本类型的Class的最简单方法.

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

Class c = boolean.class;  // correct
Run Code Online (Sandbox Code Playgroud)

请参阅:docs.oracle.com关于类


Sal*_*cia 6

简单来说,这个'.class'方法并不是指编译java代码后看到的字节码文件,也不是OOP理论中Class与Object概念之间的混淆.

这个'.class'方法在Java中用于代码Reflection.通常,您可以为您的类收集元数据,例如完整限定类名,常量列表,公共字段列表等.

检查这些链接(已在上面提到)以获取所有详细信息:
https://docs.oracle.com/javase/tutorial/reflect/class/classNew.html
https://docs.oracle.com/javase/8/docs /api/java/lang/Class.html

通常,在开始构建项目时,您不打算立即使用Reflection.在尝试管理已经运行的代码之后,您知道自己需要的东西.很多时候,您需要它来管理程序的多个实例.也许您想要识别每个特定的"克隆"以确定是否已定义某些内容,或者计算函数的数量,或者只是记录您的类的特定实例的详细信息.