网站建设便宜的公司哪家好,自己做网站难不难,企业网站开发市场,wordpress 首页 分类反射相关的主要类
java.lang.Class#xff1a;代表一个类#xff0c;Class对象表示某个类加载后在堆中的对象java.lang.reflect.Method#xff1a;代表类的方法#xff0c;Method对象表示某个类的方法java.lang.reflect.Field#xff1a;代表类的成员变量#xff0c;Fie…反射相关的主要类
java.lang.Class代表一个类Class对象表示某个类加载后在堆中的对象java.lang.reflect.Method代表类的方法Method对象表示某个类的方法java.lang.reflect.Field代表类的成员变量Field对象表示某个类的成员变量java.lang.reflect.Constructor代表类的构造方法 Constructor对象表示构造器
Class类基本介绍
Class也是类,因此也继承Object类Class类对象不是new出来的而是系统创建的对于某个类的Class类对象在内存中只有一份因为类只加载一每个类的实例都会记得自己是由哪个Class 实例所生成通过Class可以完整地得到一个类的完整结构,通过一系列APIClass对象是存放在堆的类的字节码二进制数据是放在方法区的有的地方称为类的元数据 (包括方法代码,变量名方法名访问权限等等https://www.zhihu.com/question/38496907 Class常用方法 常用方法演示-应用实例
/*** 演示 Class类常用方法*/
public class Class01 {public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException {String classAllPath com.kuang.reflection.Car;//1、获取Car类对应的Class对象?表示不确定的Java类型Class? aClass Class.forName(classAllPath);//2、输出 aClassSystem.out.println(aClass);//显示aClass对象 是哪个类的Class对象 这里是com.kuang.reflection.CarSystem.out.println(aClass.getClass());//输出aClass运行类型 java.lang.Class//3、得到包名System.out.println(aClass.getPackage().getName());//包名 com.kuang.reflection//4、得到全类名System.out.println(aClass.getName()); //com.kuang.reflection.Car//5、通过 aClass 创建对象实例Object o aClass.newInstance();System.out.println(o);//6、通过反射得到属性Field brand aClass.getField(brand);System.out.println(brand.get(o));//得到品牌梅德塞斯-奔驰//7、通过反射给属性赋值brand.set(o,宝马);System.out.println(brand.get(o));//8、得到所有字段属性Field[] fields aClass.getFields();for (Field f :fields) {System.out.println(f.getName()); //s属性名称}}
}class Car {public String brand 梅德塞斯-奔驰;public int price 500000;public String color 耀夜黑;Overridepublic String toString() {return Car{ brand brand \ , price price , color color \ };}
}
反射优点和缺点
优点可以动态的创建和使用对象也是框架底意亥心使用灵活,没有反射机制框架技术就失去底层支撑。缺点使用反射基本是解释执行对执行速度有影响。