用于的class
类型是什么?我对它的含义以及它与声明object
类型:
Class className;
由于
答案 0 :(得分:4)
Class对象有多种用途。例如,假设我想根据存储在配置文件中的某个类名创建一个类的实例。
String className = config.myClass;
Class clazz = Class.forName(className);
Object myClassInstance = clazz.newInstance();
答案 1 :(得分:3)
它表示对象的运行时类型。 Class
类型的实际程序化使用通常可在reflection和generics中找到。
例如,在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
,即Class
是Object
的子类。您定义的每个类都有自己的Class
对象。您可以MyObject.class
或myInstance.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)
Class对象
要了解运行时类型信息(RTTI)如何在Java中工作,您必须首先了解在运行时如何表示类型信息。这是通过一个完成的 特殊类型的对象,称为Class对象,它包含信息 关于班级。实际上,Class对象用于创建所有的 你班上的“常规”物品。