String className="Manager"
1.Class.forName(className)可以获得一个Manager对应的对象?
问题:这个对象是否已经分配空间?是否和new一样呢?
也有说可以加载一个Manager对象,加载的意思是什么?(在很多数据库连接的例子中都使用Class.forName来加载数据库接口类)
2.任何类T都可以使用T.class得到一个对应的Class对象,那Object中为什么没有定义class成员变量?
为什么不能用
T t=new T();
t.class来获得一个Class对象?
1.Class.forName(className)可以获得一个Manager对应的对象?
问题:这个对象是否已经分配空间?是否和new一样呢?
也有说可以加载一个Manager对象,加载的意思是什么?(在很多数据库连接的例子中都使用Class.forName来加载数据库接口类)
2.任何类T都可以使用T.class得到一个对应的Class对象,那Object中为什么没有定义class成员变量?
为什么不能用
T t=new T();
t.class来获得一个Class对象?
数据库连接上这样做是因为Class.forName后,JVM会加载这个类,加载其中的静态方法,根据JDBC规范,在类的静态代码中需要向DriverManager注册自己,这样做后DriverManager才可以在调用getConnection时逐个问已经注册的Driver类是否接受用户传入的URL 所以一般我们调用Class.forName后才可以连接数据库2、你的代码有误:
应该是 Class clz = T.class,是无需new T的,所以这个class不是Object的成员
第二问题我想问的是如果T.class中的class 是静态变量,那为什么T的实例却不能调用这个静态变量呢?如果class不是静态变量,那是什么呢?
使用Class.forName加载的
static Class class$0
static Class class$1 ....
使用Class.forName加载的
static Class class$0
static Class class$1 ....大哥能不能再说的仔细些?什么是字面量?
直接用就OK
知道他是一种类加载快捷方式而已,实际上是调用Class.forName
不过是这样更简洁,让编译器去处理了。