Java--Reflect(反射)专题1——class 类的使用

来源:互联网 发布:js拼接html代码 编辑:程序博客网 时间:2024/05/22 14:19

转载请注明http://blog.csdn.net/uniquewonderq

1.class类

1.1在面向对象的世界中,万事万物皆对象

  但是在java语言中,静态的成员,普通的数据类型(8种)。

那么类是谁的对象呢?

类是对象,类是java.lang.Class类的实例对象。

 例如自己写一个student类,就是Class类的对象。 

1.2这个对象到底如何表示?

举例说明。


package com.test;public class test {public static void main(String[] args)  {           //foo的实例对象如何表示呢?           foo foo1=new foo();//foo1就表示出来了           //foo这个类,也是一个实例对象,Class类的实例对象,如何表示呢?           //这时候就不能new出来了,只有通过jvm来创建,因为其构造方法是私有的           //任何一个类都是Class类的实例对象,这个实例对象有三种表示方式           //第一种表达方式实际在告诉我们任何一个类都有一个隐含的静态成员class           Class c1=foo.class;  //第一种表示方式           //第二种表达方式,已知该类的对象,通过getclass方法           Class c2=foo1.getClass();           //官网指出,C1,C2表示了foo类的类类型,(Class type)           //不管还是C1还是C2都代表了foo类的类类型,一个类只可能是Class类的一个实例对象           System.out.println(c1==c2);//结果输出为ture           //第三种 表达方式           Class c3=null;    try {        c3=Class.forName("com.test.foo");    } catch (ClassNotFoundException e) {       e.printStackTrace();        }    //不管几种表达方式,都代表了这个类的类类型            System.out.println(c2==c3);//结果输出为true    try {        //我们完全可以通过类的类类型创建该类的对象实例,        //也就是说,可以通过C1 OR C2 OR C3   创建foo的实例对象        foo f=(foo)c1.newInstance();//创建出了foo 类的对象,需要强制类型转换,        //上述语句的前提是:foo类需要有无参的构造方法        f.print();    } catch (InstantiationException ex) {       ex.printStackTrace();    } catch (IllegalAccessException ex) {        ex.printStackTrace();    }    }}class foo{    void print(){        System.out.println("foo");    }}

输出结果:

true
true
foo






















0 0
原创粉丝点击