A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王健宇 中级黑马   /  2012-10-21 21:48  /  1007 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class X{}
public class GetClass {
        public static void main(String args[]){
                Class<?> c1=null;
                Class<?> c2=null;
                Class<?> c3=null;
                try {                                        //第一种方式
                        c1=Class.forName("com.itheima.x");
                } catch (ClassNotFoundException e) {
                        // TODO: handle exception
                        e.printStackTrace();
                }
                c2=new X().getClass();                       //第二种方式
                c3=X.class;                                  //第三种方式
        }
}
实例化class对象有三种方式,有什么区别。在以后应用中哪个最为常用?

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
java.lang.Class 是一个比较特殊的类,它用于封装被装入到JVM 中的类(包括类和接口)的信息。 当一个类或接口被装入的JVM  时便会产生一个与之关联的java.lang.Class  对象,可以通过
这个Class 对象对被装入类的详细信息进行访问。
简单的说,获取某一个类所对应的Class 对象可以通过如下三种途径:
1. Object 的getClass 方法
java.lang.Object  中定义有getClass 方法: public final Class getClass()
所有Java 对象都具备这个方法。该方法用于返回与调用该方法对象所属类关联的Class 对象, 这个是最通用的,也算是最常用的吧。
例如: Date date1 = new Date();
Date date2 = new Date();
Class c1 = date1.getClass();
Class c2 = date2.getClass();
System.out.println(c1.getName()); // java.util.Date
System.out.println(c1 == c2); // true

2. 使用.class 的方式 :使用类名加“.class”的方式即会返回与该类对应的Class 对象。例如:
  Class clazz = String.class;
System.out.println(clazz.getName()); // java.lang.String
这个方法可以直接获得与指定类关联的Class 对象,而并不需要有该类的对象存在。
3.使用Class.forName 方法 :Class 有一个著名的static 方法forName:
public static Class forName(String className) throws ClassNotFoundException
该方法可以根据字符串参数所指定的类名获取与该类关联的Class 对象。如果该类还没有被 装入,该方法会将该类装入JVM。
该方法声明抛出ClassNotFoundException 异常。顾名思义,当该方法无法获取需要装入的类 时(例如,在当前类路径中不存在这个类),就会抛出这个异常。
回复 使用道具 举报
Class.forName("com.itheima.x");这个最常用,参数需要写出全称,JDBC中也是使用这个进行类的加载。
c2=new X().getClass();  这个必须在有对象的情况下才可以使用。
c3=X.class;  这个直接用类名生成Class对象。

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马