Java API中的类“Class”和“class”关键字之间有什么区别?

时间:2014-08-21 12:48:43

标签: java

Java类Class(扩展Object)和class关键字(用于创建类的单词)之间有什么区别?

5 个答案:

答案 0 :(得分:2)

在编程中,反射是程序通过分析运行时细节(例如对象实例的实际实现类)来在运行时修改其自身结构和行为的能力。 Class类是Java API的一部分,用于反射。 class关键字是标记新类定义的Java语言结构,而Class类用于将类和变量类型本身键入。这是程序使用类定义本身作为编程对象的一种方式(例如,您可以通过编程方式枚举类的公共方法)。

此外,任何类型为o的实例Object(即Java中的任何对象)都会继承getClass实例方法。这将生成对象的实际运行时类,而不管存储对象的变量的编译时代码声明类。例如,对于某些已定义的类X

Object o = new X();
Class<?> type = o.getClass();

type现在将成为对X类本身的引用,它与Class<?>泛型描述匹配,因为X类实际上是Class<X>类的实例1}}。

每个定义的类也有一个名为class的静态变量,它返回类本身。在类X的实例上调用getClass将返回与该类'Class<X>静态变量相同的class实例:

("some string").getClass() == String.class

值得注意的是,原始类型都具有静态class变量,即使它们不是对象。值得注意的是,原始类型的class与其wrapper classclass不同:

int.class != Integer.class

答案 1 :(得分:1)

Class是一个Java类,就像Object一样,String是类。
另一方面,如果我们说:

Class<?> c = String.class;

我们得到的回报是类型为Class的{​​{1}}对象:

String

简而言之,两者基本相同,但您可以使用Class<String> 类保留String.class对象的引用。

它们用于Java反射,您可以在这里了解更多信息:http://docs.oracle.com/javase/tutorial/reflect/

答案 2 :(得分:0)

Class是一个&#34; Java类&#34;提供操作&#34; Java类&#34;的方法。而class是一个Java关键字,用于声明&#34; Java类&#34;

答案 3 :(得分:0)

Class是一个Java类类型(扩展了Object类,如你所说),&#34;一个可扩展的程序代码模板,用于创建对象,为状态(成员变量)提供初始值,行为的实现(成员函数,方法)。&#34; - Wikipedia

另一方面,class是关键字,即语言编译器(或其他情况下的解释器)的保留字,不能用作标识符或任何其他用途。此特定关键字用于声明自定义类类型。

答案 4 :(得分:0)

Class个对象是类Objects的特殊类型java.lang.Class,用于表示类定义。 class关键字是一个关键字,用于表示可以放置方法和变量的类。使用类对象最重要的是执行 Reflection API ,它可以用来动态创建对象,调用方法和内省它们。您还可以使用java.lang.ClassLoader

加载类的多个版本