大侠们介绍一下java中的Class类,详细些

解决方案 »

  1.   

     在java的帮助文档中,java.lang包中有一个Class类,注意这里的"C“是大写,所以这个不是表示类的声明,而是一个真正的类。在java的帮助文档中,这样定义的Class类:public final class Class<T>
    extends Object
    implements Serializable, GenericDeclaration, Type, AnnotatedElement
    Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和double)和关键字 void 也表示为 Class 对象。 Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的defineClass 方法自动构造的。        在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。Class类不是我们认为创建的,是由java虚拟机,在我们生成.class文件的时候创建的,我们可以通过几种方法,获得这个Class类实例。下面介绍一下这几种方法:(1)利用对象调用getClass()方法获取该对象的Class实例;(2)使用Class类的静态方法forName(),用类的名字获取一个Class实例;(3)运用.class的方式来获取Class实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的Class实例。下面的是一个实例class Point{}Point pt=new Point();
      Class c1=pt.getClass();
      System.out.println(c1.getName());
      try  {//forName会抛出一个异常所以需要捕获
       Class c2=Class.forName("Point");
       System.out.println(c2.getName());
      }
      catch(Exception e){
       e.printStackTrace();
      }
      Class c3=Point.class;
      System.out.println(c3.getName());
      Class c4=int.class;
      System.out.println(c4.getName());
      Class c5=Integer.TYPE;
      System.out.println(c5.getName());
      Class c6=Integer.class;
      System.out.println(c6.getName());//Point//Point//Point//int//int      在运行期间,如果我们要产生某个类的对象,Java虚拟机(JVM)会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象。换句话说java中的.class文件并不是所有的都会被加载到内存,只有在需要的时候才会进行加载。       Class类有一方法newInstance(),可以在不知道类的名字的情况下创建一个对象。使用newInstance()的方法的时候,应该注意这个方法默认调用的是不带参数的构造方法。如果只是去创建一个一个不带参数的构造方法,那么这个方法的用处就不大了,如果我们想要调用带参数的构造方法,这里我们就需要使用到反色API。对于反色API的介绍,查看我先前转载的一篇文章(http://blog.csdn.net/mengxiangyue/article/details/6825923)。有时候我们会收到一个通过网络发来的一个类,我们需要创建一个对象,但是对于这个类是怎么实现的,我们都不知道。这里我们就可以使用反色API加上Class类的newInstance(),在不知道类的情况下,创建一个对象。对于这个Class的用处目前就知道这么多,如果还有什么,希望有大侠指点。
      

  2.   

    欢迎访问我的博客获得更多关于java的原创http://blog.csdn.net/mengxiangyue
      

  3.   

    相信API里面的东西 够楼主看的public final class Class<T>extends Objectimplements Serializable, GenericDeclaration, Type, AnnotatedElementClass 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。 Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。 以下示例使用 Class 对象来显示对象的类名: 
         void printClassName(Object obj) {
             System.out.println("The class of " + obj +
                                " is " + obj.getClass().getName());
         }
     还可以使用一个类字面值(JLS Section 15.8.2)来获取指定类型(或 void)的 Class 对象。例如: 
         System.out.println("The name of class Foo is: "+Foo.class.getName());
      

  4.   

    简单的说,Class就是类的字节码。
      

  5.   

    在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。Class类不是我们认为创建的,是由java虚拟机,在我们生成.class文件的时候创建的,我们可以通过几种方法,获得这个Class类实例。