繁体   English   中英

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

[英]java class types - what do they mean?

什么是java class类型? 我很困惑它的含义以及它与声明object类型的不同之处:

Class className;

谢谢

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

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

它表示对象的运行时类型 Class类型的实际编程使用通常在反射泛型中找到。

例如,在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);

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

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

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

javadoc说:

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

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

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

Thinking in Java

Class对象

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM