获取不同类型的Class对象

来源:互联网 发布:如何从考勤机导出数据 编辑:程序博客网 时间:2024/06/04 18:44

在加载阶段,对于任意一个类,都会在堆上生成一个Class类型的对象。通过这个对象可以获取这个类的结构信息。

可以通过如下4种方式获取这个Class对象

ClassLoader.load();

String.class;

Class.forName();

str.getClass();

其中反射时最常用的是Class.forName()

 

1、一个类只有一个Class类型的对象

2、基本数据类型也有

3、对于数组,相同维度的Class对象是同一个。

 

 Java Code 

 

package com.bjsxt.test;

public class Test {

    
public static void main(String[] args) {

        
String path = "com.bjsxt.test.User";

        
try {
            
//1、一个类只有一个Class类型的对象
            Class clazz = Class.forName(path);
            Class clazz2 = Class.forName(path);
            System.out.println(clazz.hashCode()==clazz2.hashCode());
            
            Class strClazz1 = 
String.class;
            
String str = new String("abc");
            Class strClazz2 = str.getClass();
            System.out.println(strClazz1.hashCode()==strClazz2.hashCode());

            
//2、基本数据类型也有
            Class intClazz = int.class;
            Class integerClazz=Integer.
class;
            System.out.println(intClazz.hashCode()==integerClazz.hashCode());

            
//3、对于数组,相同维度的Class对象是同一个。
            int[] arr01 = new int[10];
//           int[] arr02=new int[20];//跟上面是同一个Class对象
            int[][] arr02 = new int[20][];
            System.out.println(arr01.getClass().hashCode()==arr02.getClass().hashCode());
            
            
//注意这个地方是多态,获取的是com.bjsxt.test.SubUser
            User u=new SubUser();
            System.out.println(u.getClass().getName());
            
        } 
catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

}

 


 

0 0
原创粉丝点击