JAVA反射之CLass类的练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA反射之CLass类的练习相关的知识,希望对你有一定的参考价值。

 1 package zhang;
 2 /**
 3  * JAVA反射之CLass类的练习
 4  * 
 5  * 在面向对象的语言里,万事万物皆对象,那么类是谁的对象呢?
 6  * 类的类型是CLass
 7  * 
 8  * */
 9 class Test{
10     void print(){
11         System.out.println("Hello world!");
12     }
13 }//Test是一个类。
14 public class ClassDemo {
15     public static void main(String[] args) {
16         //创建Test对象的方式
17         Test test=new Test();//这样通过new 就创建除了Test的对象
18         //那么类也是一种对象,作为Test类,如何创建出对象为Test的对象呢?
19         /*
20          * 
21          * Constructor. Only the Java Virtual Machine creates Class
22          * objects.
23          * private Class() {}
24          * Class类的构造方法是私有的,所以不能通过new来创建Class 对象。
25          * Class对象只能通过Java虚拟机创建
26          */
27  
28         /**
29          * 有三种方式
30          * */
31         /* 第一种:Class T1=Test.class 这种方式实际上是在告诉我们任何
32          * 一个类都存在一个隐含的静态成员class
33          * 
34          * 通过已知类型来创建
35          */
36         
37         Class T1=Test.class;
38         
39         /*
40          * 第二种
41          * 通过已知类型的对象来创建
42          * */
43         Class T2=test.getClass();
44         
45         System.out.println(T2==T1);
46         
47         /*
48          * 
49          * 第三种
50          * */
51         Class T3=null;
52         try {
53             T3=Class.forName("zhang.Test");
54         } catch (ClassNotFoundException e) {
55             // TODO Auto-generated catch block
56             e.printStackTrace();
57         }
58         
59         System.out.println(T3==T2);
60         //也就是说:不管T1 or T2都代表Test类的类类型,一个类只可能是Class类的一个实例对象。
61         
62         //我们可以通过T1 or T2 or T3来创建Test对象。
63         try {
64             Test test1=(Test) T1.newInstance();//这样就创建出Test的实例了
65             test1.print();
66             
67             
68         } catch (InstantiationException e) {
69             // TODO Auto-generated catch block
70             e.printStackTrace();
71         } catch (IllegalAccessException e) {
72             // TODO Auto-generated catch block
73             e.printStackTrace();
74         }    
75     }
76 }

 

package zhang;
/**
 * JAVA反射之CLass类的练习
 *
 * 在面向对象的语言里,万事万物皆对象,那么类是谁的对象呢?
 * 类的类型是CLass
 *
 * */
class Test{
    void print(){
        System.out.println("Hello world!");
    }
}//Test是一个类。
public class ClassDemo {
    public static void main(String[] args) {
        //创建Test对象的方式
        Test test=new Test();//这样通过new 就创建除了Test的对象
        //那么类也是一种对象,作为Test类,如何创建出对象为Test的对象呢?
        /*
         *
         * Constructor. Only the Java Virtual Machine creates Class
         * objects.
         * private Class() {}
         * Class类的构造方法是私有的,所以不能通过new来创建Class 对象。
         * Class对象只能通过Java虚拟机创建
         */
 
        /**
         * 有三种方式
         * */
        /* 第一种:Class T1=Test.class 这种方式实际上是在告诉我们任何
         * 一个类都存在一个隐含的静态成员class
         *
         * 通过已知类型来创建
         */
        
        Class T1=Test.class;
        
        /*
         * 第二种
         * 通过已知类型的对象来创建
         * */
        Class T2=test.getClass();
        
        System.out.println(T2==T1);
        
        /*
         *
         * 第三种
         * */
        Class T3=null;
        try {
            T3=Class.forName("zhang.Test");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        System.out.println(T3==T2);
        //也就是说:不管T1 or T2都代表Test类的类类型,一个类只可能是Class类的一个实例对象。
        
        //我们可以通过T1 or T2 or T3来创建Test对象。
        try {
            Test test1=(Test) T1.newInstance();//这样就创建出Test的实例了
            test1.print();
            
            
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }    
    }
}


































































































以上是关于JAVA反射之CLass类的练习的主要内容,如果未能解决你的问题,请参考以下文章

JAVA编程之——反射Reflect

Java 基础篇之反射

Java基础之反射注解代理

Java重要技术反射之Class类

学习大数据:Java基础篇之反射

Java 反射之Class类的理解以及获取Class的实例