1、首先java中每个类对象都有一个类字节码,都属于Class.
java的9大基本数据类型:int、short、long、float、double、char、byte、boolen和void。它们对应的类与其对应的类对象是不一样的,如int.class==Integer.class返回false,但是Integer包装的基本数据类型是int,因此Integer.Type==int.class返回的是true。判断一个类是否基本数据类型 calss.isPrimitive()。基本数据类型的数组不是基本类型:即int[].class.isPrimitive返回false,int[].class.isArray返回true。
基本数据类型的数组必须维数和类型相同得到的字节码类型才相同:
2、java反射,首先反射能够通过类名获取类的字节码,然后获取各个属性,方法,构造方法等类的一切。如下方法:得到了类对象,方法和属性当然可以对对象进行操作了。
public static void MyTest(String cl){ //要求用户输入类的全路径 try { Class cla=Class.forName(cl);//根据类的全路径进行类加载,返回该类的Class对象 Object o=cla.newInstance();//获取cla的对象,如果有有参数的构造函数则获取它的构造函数,然后创建。前提是对类有一定了解才用反射 Method[] method=cla.getDeclaredMethods();//利用得到的Class对象的自审,返回方法对象集合 for(Method me:method){//遍历该类方法的集合 System.out.println(me.toString());//打印方法信息 } System.out.println("********"); Field[] field=cla.getDeclaredFields();//利用得到的Class对象的自审,返回属性对象集合 for(Field me:field){ //遍历该类属性的集合 System.out.println(me.toString());//打印属性信息 } } catch (ClassNotFoundException e) { e.printStackTrace(); } }
3、反射作用:最简单的用处 我有很多个对象 每个都不一样 我需要将他们拼接成我要的标准绘图串 不管什么对象 构造有什么区别 我直接反射属性名和属性值进行我要的操作 一个方法适配所有类 没反射你要为每一个类去写一个方法 因为每个类里面的属性名都不一样 不知道属性名就没法写 但有了反射 你一个属性名都不需要知道。比如:数据库里有很多个表格,每一个表格都有自己的属性,且属性的个数也不一样;同时没个表格都有相应的增删改查的操作,若不用反射你就必须每一个表格写一个增删改查的方法,麻烦切代码冗余大。利用反射,把类的参数传递进来(和上面的方法一样),这样得到所有的属性就可以相应的操作,就只需要写一次增删改查了。
时间: 2024-12-06 10:00:42