解释一下class.forname的用法

2014-06-21 06:30:02 阅读( 172 )

2661人 收藏本页

标签:Java面试题

JDK 6.0文档中,解释java.lang.Class 由此class对象建模的类的类型。
解释的内容让人迷惑,到底什么意思呢?而且这里涉及到泛型。
泛型:Java 泛型的参数只可以代表类,不能代表个别对象。由于 Java 泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型。Java 编译器在编译泛型时会自动加入类型转换的编码,故运行速度不会因为使用泛型而加快。Java 允许对个别泛型的类型参数进行约束,包括以下两种形式(假设 T 是泛型的类型参数,C 是一般类、泛类,或是泛型的类型参数):T 实现接口 I 。T 是 C ,或继承自 C 。一个泛型类不能实现Throwable接口。
好了,我们提出一个叫动态加载类的概念即当你不知道要创建类的名字是哪个的时候,就使用Class.forName(“A”)来加载所需要的类,该方法返回的是一个Class对象,和new ClassA()的作用相同。
以下的这段解释我想更具说服力
使jvm载入这个类(不是实例化)。
Driver类一般都有一段静态的初始化代码如
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (java.sql.SQLException E) {
throw new RuntimeException(“Can’t register driver!”);
}
}
当调用Class.forName(“xxx.xxx.Driver”)时,这段代码就会被执行
从而在驱动管理器中注册了这个驱动程序。

来自IT公司面试手册

下一篇:java计算器的实现

上一篇:java 面试题

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题