今天在看JIVE论坛的源码, 
有下面一段代码Class authorization = Class
.forName("com.jivesoftware.base.AuthToken");
package com.jivesoftware.base;public interface AuthToken { public abstract long getUserID();

public abstract boolean isAnonymous();
}
这是做些什么呢, 是实例化AuthToken 吗, 但接口是不能实例化的啊

解决方案 »

  1.   

    加载这个类,并且得到其Class对象.
      

  2.   

    我不知道AuthToken代码是什么样子的.class.forName将会使jvm加载这个AuthToken, 也就是会把这个class文件读到jvm的class空间, 不管它是接口还是类. 但是不实例化. 如果这个class中有static块, 则会执行static块. 一般数据库的驱动程序就是这么做的.还记得我们写jdbc么? 里面有一个class.forName(driverName),之后再也没有明文只用驱动类, 是因为该做的在class.forName(driverName)这句话中已经做好了.