日志文章

2020-1-2 aflfte2011

反射(测试java.lang.Class对象的获取方式)

package com.aflfte.test;
/**
 * 反射
 * 测试java.lang.Class对象的获取方式
 * 获取各种类型包括(class,interface,enum,annotation,primitive,type,void等等)对应的Class对象
 * 
 * @author jinhao
 *
 */
public class Demo01 {
public static void main(String[] args) {
String path="com.aflfte.test.bean.User";
//利用反射加载User类
try {
//对象是用来表示或封装一些数据。一个类被加载后,JVM会创建一个对应该类的Class对象,会将类的整个结构信息放到对应的Class对象中。
//这时这个Class对象就是一面镜子一样,通过这面镜子我们可以看到这个类的全部信息。  这个就是我们所说的反射机制。
Class<?> cla=Class.forName(path);
System.out.println(cla.hashCode());
//一个类被加载之后只会形成一个对象,多次加载也不会改变对象信息
Class<?> cla2=Class.forName(path);
System.out.println(cla2.hashCode());

//类的获取方式:
Class strcla=String.class;//方式2

Class strcla2=path.getClass();//方式3



System.out.println(strcla==strcla2);

Class intcla=int.class;//获取int的calss对象


int[] a=new int[10];
int[][] a2=new int[30][3];
int[] a3=new int[30];
double[] a4=new double[30];
System.out.println(a.getClass().hashCode());
System.out.println(a2.getClass().hashCode());
System.out.println(a3.getClass().hashCode());
System.out.println(a4.getClass().hashCode());

} catch (ClassNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}


« 应用反射API,获取类的信息 | 注解创建与反射使用»