快速业务通道

Java中Class类工作原理详解 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
ss;     System.out.println(c4.getName());     Class c5 = Integer.TYPE;     System.out.println(c5.getName());     Class c6 = Integer.class;     System.out.println(c6.getName());   } }

结果:

com.zj.sample.Point

com.zj.sample.Point

com.zj.sample.Point

int

int

java.lang.Integer

Java中Class类工作原理详解(3)

时间:2010-03-27

7.Class的其他方法

1)Class.newInstance()使用所选的Class对象生成该类的新实例。它调用了缺省(无参数)的类构造器生成新的对象。所以使用newInstance()创建的类必须有一个缺省构造器。对于newInstance()来说,可以在原先没有任何对象存在的情况下,使用它创建一个新的对象。

利用newInstance()实例化一个对象:

package com.zj.sample; class Point {   static {     System.out.println("Loading Point");   }   int x, y; } class ClassTest {   public static void main(String[] args) {     try {       Class c = Class.forName("com.zj.sample.Point");       Point pt = (Point) c.newInstance();     } catch (Exception e) {       e.printStackTrace();     }   } }

结果:

Loading Point

2)Class.isInstance()方法提供了一种动态地调用instanceof运算符的途径。

3)Class.getInterfaces()方法返回Class对象的数组,这些对象代表的是某个Class对象所包含的接口。

4)如果有一个Class对象,那么就可以通过getSuperclass()获取它的直接基类。这个方法自然也是返回一个Class引用,所以可以进一步查询其基类。这意味着在运行时,可以找到一个对象完整的类层次结构。

5)Class类支持反射的概念,Java附带的库java.lang.reflect包含了Field、Method以及Constructor类(每个类都实现了Member接口)。这些类型的对象是由JVM在运行时创建的,用以表示未知类里对应的成员。这样可以使用Constructor创建新的对象,用get()和set()方法读取和修改与Field对象关联的字段,用invoke()方法调用与Method对象关联的方法。另外,还可以调用getFields()、getMethods、getConstrucotrs()方法,返回表示字段、方法以及构造器的对象的数组。

Java中Class类工作原理详解(4)

时间:2010-03-27

8.利用反射API察看未知类的构造方法与方法

package com.zj.sample; import java.lang.reflect.Constructor; import java.lang.reflect.Method; class Point {   static {     System.out.println("Loading Point");   }   int x, y;   void output() {     System.out.println("x=" + x + "," + "y=" + y);   }   Point(int x, int y) {     this.x = x;     this.y = y;   } } class ClassTest {   public static void main(String[] args) {         try {       Class c = Class.forName("com.zj.sample.Point");       Constructor[] cons = c.getDeclaredConstructors();       for (int i = 0; i < cons.length; i++)// 返回所有声明的构造方法       {        System.out.println(cons[i]);       }       Method[] ms = c.getDeclaredMethods();       for (int i = 0; i < ms.length; i++)// 返回所有声明的方法       {        System.out.println(ms[i]);       }     } catch (Exception e) {       e.printStackTrace();     }   } }

结果:

Loading Point

com.zj.sample.Point(int,int)

void com

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号