获取Class3种方法
1、Class c=Class.forName(“完整类名带包名”);
2、Class c=对象.getClass();
3、Class c=任何类型.class;
import java.util.Date;
/**
* 要操作一个类的字节码,首先获取这个类的字节码,怎么获取java.lang.Class实例?
* 3种方式
*/
import java.util.Date;
/**
* 要操作一个类的字节码,首先获取这个类的字节码,怎么获取java.lang.Class实例?
* 3种方式
*/
public class test {
public static void main(String[] args) {
/**
* Class.forName()
* 1、静态方法
* 2、方法参数是字符串
* 3、字符串需要的是一个完整的类名
* 4、完整的类名必须带包名。java.lang包也不能省略
*/
Class c = null;
Class c2 = null;
/**
* 第1种方式
*/
try {
c = Class.forName("java.lang.String");//c代表是String.class,或者说是String类型
c2 = Class.forName("java.lang.Date");//c2代表是Date类型
Class c3 = Class.forName("java.lang.Integer");//c3代表是Integer
Class c4 = Class.forName("java.lang.System");//c4代表的是System*/
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
/**
* 第2种方式
*/
//java中任何一个对象都有一个方法。getClass()
String s = "hello";
Class x = s.getClass();//a代表的是String.class字节码文件。x代表的是String类型
System.out.println(x == c);//true判断的是内存地址
Date d = new Date();
Class y = d.getClass();
System.out.println(y == c2);//false
/**
* 第3种方式
* 在java语言中,任何一种数据类型都有.class,包括基本数据类型
*/
Class f = String.class;//f代表是String类型
Class h = Integer.class;//h代表的是Integer包装类型
Class k = Date.class;//k代表的是时间类
Class l = int.class;//l代表的是int类型
System.out.println(x==f);//true
}
}