Class类的简单介绍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值