java类类型 - 它们是什么意思?

时间:2010-02-15 19:26:47

标签: java types

用于的class类型是什么?我对它的含义以及它与声明object类型:

的不同之处感到困惑
Class className;

由于

6 个答案:

答案 0 :(得分:4)

Class对象有多种用途。例如,假设我想根据存储在配置文件中的某个类名创建一个类的实例。

String className = config.myClass;
Class clazz = Class.forName(className);
Object myClassInstance = clazz.newInstance();

答案 1 :(得分:3)

它表示对象的运行时类型Class类型的实际程序化使用通常可在reflectiongenerics中找到。

例如,在Class#forName()的帮助下抽象地加载JDBC驱动程序:

String jdbcDriverClassName = getItFromSomeExternalConfigurationFile();
Class.forName(jdbcDriverClassName);

或者将通用Object类型转换为以前的类型:

public static <T> T findAttribute(String key, Class<T> type) {
    return type.cast(attributeMap.get(key)); // It's a Map<String, Object>.
}

...可以用作

SomeType instance = findAttribute("someKey", SomeType.class);

在“通用对象转换器”的风格中可以找到更加扩展的示例here

实际上,阅读java.lang.Class javadoc,包括所有可用的方法,应该可以让你知道它可以用于什么。

答案 2 :(得分:2)

Class是一种特殊类型的Object,即ClassObject的子类。您定义的每个类都有自己的Class对象。您可以MyObject.classmyInstance.getClass()访问此项。换句话说,您定义的任何类都具有Class属性,其中任何类都是Object。我同意这对新手来说有点混乱。

答案 3 :(得分:1)

javadoc说:

  

类Class的实例表示正在运行的Java应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组也属于一个类,它反映为一个Class对象,由具有相同元素类型和维数的所有数组共享。原始Java类型(boolean,byte,char,short,int,long,float和double)和关键字void也表示为Class对象。

     

Class没有公共构造函数。相反,类对象由Java虚拟机在加载类时自动构造,并通过调用类加载器中的defineClass方法来构造。

答案 4 :(得分:1)

您可以在检查某个变量的类型或检查继承运行时时使用它。 它也用于反射,动态加载类型并在它们上执行方法。

答案 5 :(得分:1)

从书Thinking in Java

  

Class对象

     

要了解运行时类型信息(RTTI)如何在Java中工作,您必须首先了解在运行时如何表示类型信息。这是通过一个完成的   特殊类型的对象,称为Class对象,它包含信息   关于班级。实际上,Class对象用于创建所有的   你班上的“常规”物品。