当前位置: 首页 > news >正文

电商平台正在建设中网站页面提示大良营销型网站设计公司

电商平台正在建设中网站页面提示,大良营销型网站设计公司,免费模板做网站,外贸获客渠道有哪些文章目录1.类加载器1.1类加载器【理解】1.2类加载的过程【理解】1.3类加载的分类【理解】1.4双亲委派模型【理解】1.5ClassLoader 中的两个方法【应用】2.反射2.1反射的概述【理解】2.2获取Class类对象的三种方式【应用】 第1步#xff1a;获取类的Class对象2.3反射获取构造方… 文章目录1.类加载器1.1类加载器【理解】1.2类加载的过程【理解】1.3类加载的分类【理解】1.4双亲委派模型【理解】1.5ClassLoader 中的两个方法【应用】2.反射2.1反射的概述【理解】2.2获取Class类对象的三种方式【应用】 第1步获取类的Class对象2.3反射获取构造方法并使用【应用】第2.1步利用Class类获取对象方法2.3.1Class类获取构造方法对象的方法2.3.2Constructor类用于创建对象的方法 (构造方法获取到了,接下来第3步利用构造方法创建对象了2.3.3小结2.4反射获取成员变量并使用【应用】2.4.1Class类获取成员变量对象的方法 第2步获取成员变量 (第1步已经获取了Class类对象了)2.4.2Field类用于给成员变量赋值的方法 第3步使用成员变量 (前面已经获取到了成员变量对象了)2.5反射获取成员方法并使用【应用】2.5.1Class类获取成员方法对象的方法 (第2步用Class类对象获取成员方法)2.5.2Method类用于执行方法的方法 第3步前面已经获取了成员方法这里该执行成员方法了小结反射根据配置文件动态创建对象并执行方法LX 再手敲一遍读取配置文件动态创建类对象获取方法并执行1.类加载器 1.1类加载器【理解】 作用 负责将.class文件存储的物理文件加载在到内存中 1.2类加载的过程【理解】 类加载时机 创建类的实例对象调用类的类方法访问类或者接口的类变量或者为该类变量赋值使用反射方式来强制创建某个类或接口对应的java.lang.Class对象初始化某个类的子类直接使用java.exe命令来运行某个主类 类加载过程 加载 通过包名 类名获取这个类准备用流进行传输将这个类加载到内存中加载完毕创建一个class对象 类在内存中不能随便乱放得为每个类创建一个Class对象来存放这个类的信息 链接 验证 确保Class文件字节流中包含的信息符合当前虚拟机的要求并且不会危害虚拟机自身安全 (文件中的信息是否符合虚拟机规范有没有安全隐患) 准备 负责为类的类变量被static修饰的变量分配内存并设置默认初始化值 (初始化静态变量) 静态变量有默认的初始化值 开辟空间 赋值为null 注意只为static修饰的静态变量赋初值 解析 将类的二进制数据流中的符号引用替换为直接引用 (本类中如果用到了其他类此时就需要找到对应的类) “将类的二进制数据流中的符号引用替换为直接引用”: 加载好了类Student但是其成员name是引用类型对应的String类到底有没有被加载呀加载了在哪呀 所以String先是符号引用 ----内存中找到String类------ 就变成了 直接引用(String类型) 初始化 根据程序员通过程序制定的主观计划去初始化类变量和其他资源 (静态变量赋值以及初始化其他资源) 小结 当一个类被使用的时候才会加载到内存类加载的过程: 加载、验证、准备、解析、初始化 1.3类加载的分类【理解】 分类 Bootstrap class loader虚拟机的内置类加载器通常表示为null 并且没有父nullPlatform class loader平台类加载器,负责加载JDK中一些特殊的模块System class loader系统类加载器(应用程序类加载器),负责加载用户类路径上所指定的类库 类加载器的继承关系 System的父加载器为PlatformPlatform的父加载器为Bootstrap 1.4双亲委派模型【理解】 介绍 如果一个类加载器收到了类加载请求它并不会自己先去加载而是把这个请求委托给父类的加载器去执行如果父类加载器还存在其父类加载器则进一步向上委托依次递归请求最终将到达顶层的启动类加载器如果父类加载器可以完成类加载任务就成功返回倘若父类加载器无法完成此加载任务子加载器才会尝试自己去加载这就是双亲委派模式 是逻辑上的父子关系不是extends的继承父子关系。 就是把类加载任务委托给‘父亲’去加载 某个父亲加载不了就返回直到最后没办法自己才去加载 1.5ClassLoader 中的两个方法【应用】 方法介绍 方法名说明public static ClassLoader getSystemClassLoader()获取系统类加载器public InputStream getResourceAsStream(String name)加载某一个资源文件public class ClassLoaderDemo1 {public static void main(String[] args) {//获得系统类加载器ClassLoader systemClassLoader ClassLoader.getSystemClassLoader();//获得系统类加载器的父加载器 --- 平台类加载器ClassLoader platformClassLoader systemClassLoader.getParent();//获得平台类加载器的父加载器 --- 启动类加载器ClassLoader bootstrapClassLoader platformClassLoader.getParent();System.out.println(系统类加载器systemClassLoader);System.out.println(平台类加载器platformClassLoader);System.out.println(启动类加载器bootstrapClassLoader);} }LX 读取properties文件 prop.properties namezhangsan age13ClassLoaderDemo2.java public class ClassLoaderDemo2 {public static void main(String[] args) throws IOException {//static ClassLoader getSystemClassLoader() 获取系统类加载器//InputStream getResourceAsStream(String name) 加载某一个资源文件//获取系统类加载器ClassLoader systemClassLoader ClassLoader.getSystemClassLoader();//利用加载器去加载一个指定的文件//参数文件的路径放在src的根目录下默认去那里加载//返回值字节流。InputStream is systemClassLoader.getResourceAsStream(prop.properties);Properties prop new Properties();prop.load(is);System.out.println(prop);is.close();} }ClassLoaderDemo2.java 整理后很简单 public class ClassLoaderDemo2_1 {public static void main(String[] args) throws IOException {// 获得系统类加载器ClassLoader systemClassLoader ClassLoader.getSystemClassLoader();// 利用加载器加载一个指定文件 返回字节流InputStream is systemClassLoader.getResourceAsStream(prop.properties);Properties prop new Properties();prop.load(is);System.out.println(prop prop);is.close();} }2.反射 2.1反射的概述【理解】 反射机制 是在运行状态中对于任意一个类都能够知道这个类的所有属性和方法 对于任意一个对象都能够调用它的任意属性和方法 这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。 2.2获取Class类对象的三种方式【应用】 第1步获取类的Class对象 三种方式分类 类名.class属性 对象名.getClass()方法 Class.forName(全类名)方法 示例代码 Student.java package cn.whu.myreflect1;public class Student {private String name;private int age;//空参构造全参构造toString所有get/setpublic void study(){System.out.println(学生在学习);} } ReflectDemo1.java /*** 各种获取类的Class对象的方法*/ public class ReflectDemo1 {public static void main(String[] args) throws ClassNotFoundException {//方法1.Class类中的静态方法forName(全类名) //所谓全类名: 包名.类名Class clazz Class.forName(cn.whu.myreflect1.Student);System.out.println(clazz);//class cn.whu.myreflect1.Student//方法2.通过class属性来获取Class clazz2 Student.class;System.out.println(clazz2);//class cn.whu.myreflect1.Student//方法3.利用对象的getClass方法来获取class对象//getClass方法是定义在Object类中的所以任何对象都有Student stu new Student();Class clazz3 stu.getClass();System.out.println(clazz3);//class cn.whu.myreflect1.StudentSystem.out.println(clazz clazz2);//trueSystem.out.println(clazz2 clazz3);//true} }无视修饰符 无视private还是public 有了Class对象可以干嘛可以获取类的所有信息主要也就三类构造器、普通方法、成员变量 Class对象组成如下 2.3反射获取构造方法并使用【应用】第2.1步利用Class类获取对象方法 2.3.1Class类获取构造方法对象的方法 方法介绍 方法名说明Constructor?[] getConstructors()返回所有公共构造方法对象的数组Constructor?[] getDeclaredConstructors()返回所有构造方法对象的数组Constructor getConstructor(Class?… parameterTypes)返回单个公共构造方法对象Constructor getDeclaredConstructor(Class?… parameterTypes)返回单个构造方法对象 Student.java package cn.whu.myreflect2;public class Student {private String name;private int age;//私有的有参构造private Student(String name){System.out.println(name值为:name);System.out.println(private Student 有参构造方法);}//公共无参构造public Student() {System.out.println(public Student 无参构造方法);}//公共有参构造public Student(String name,int age){System.out.println(name值为:name age值为:age);System.out.println(public Student 有参构造方法);} }Constructor?[] getConstructors() 返回所有公共构造方法对象的数组 public static void main(String[] args) throws ClassNotFoundException {//1.不管那种获取方法 第一步都得先获取Class对象啊Class? clazz Class.forName(cn.whu.myreflect2.Student);//2. Constructor?[] getConstructors() 返回所有公共构造方法对象的数组Constructor?[] constructors clazz.getConstructors();for (Constructor? constructor : constructors) {System.out.println(constructor);}}Constructor?[] getDeclaredConstructors() 返回所有构造方法对象的数组 public static void main(String[] args) throws ClassNotFoundException {//1.不管那种获取方法 第一步都得先获取Class对象啊Class? clazz Class.forName(cn.whu.myreflect2.Student);//2. Constructor?[] getDeclaredConstructors() 返回所有构造方法对象的数组Constructor?[] declaredAnnotations clazz.getDeclaredConstructors();for (Constructor declaredAnnotation : declaredAnnotations) {System.out.println(declaredAnnotation);}Constructor getConstructor(Class?… parameterTypes) 返回单个公共构造方法对象 参数就写构造方法的形式参数类型对应的Class类 public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException {//1.不管那种获取方法 第一步都得先获取Class对象啊Class? clazz Class.forName(cn.whu.myreflect2.Student);//2. Constructor getConstructor(Class?… parameterTypes) 返回单个公共构造方法对象Constructor? constructor1 clazz.getConstructor();System.out.println(constructor1);//public cn.whu.myreflect2.Student() 公共空参构造Constructor? constructor2 clazz.getConstructor(String.class, int.class);//参数类型就写构造方法的形参类型和顺序System.out.println(constructor2);//public cn.whu.myreflect2.Student(java.lang.String,int) //string,int参构造方法//Constructor? constructor3 clazz.getConstructor(int.class);//报错 并没有一个参数为(int)的构造方法}Constructor getDeclaredConstructor(Class?… parameterTypes) 返回单个构造方法对象 私有的也可以获取到 public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException {//1.不管那种获取方法 第一步都得先获取Class对象啊Class? clazz Class.forName(cn.whu.myreflect2.Student);//2. Constructor getDeclaredConstructor(Class?… parameterTypes) 返回单个构造方法对象// 私有的也可以获取到Constructor? declaredConstructor clazz.getDeclaredConstructor(String.class);System.out.println(declaredConstructor);}2.3.2Constructor类用于创建对象的方法 (构造方法获取到了,接下来第3步利用构造方法创建对象了 方法介绍 方法名说明T newInstance(Object…initargs)根据指定的构造方法创建对象setAccessible(boolean flag)设置为true,表示取消访问检查 T newInstance(Object…initargs) 根据指定的构造方法创建对象 public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {//1. 第一步永远都是先获取Class对象Class? clazz Class.forName(cn.whu.myreflect2.Student);//2.获取构造方法对象Constructor? constructor clazz.getConstructor(String.class, int.class);//3.利用newInstance 创建Student对象Student student (Student) constructor.newInstance(张三,23); // 当然创建对象时的实参值得这时候传递了// 此时构造方法会自动执行System.out.println(student student);}类似的调用空参构造 public static void main(String[] args) throws Exception {//1. 第一步永远都是先获取Class对象Class? clazz Class.forName(cn.whu.myreflect2.Student);//2.获取构造方法对象Constructor? constructor clazz.getConstructor();//3.利用newInstance 创建Student对象Student student (Student) constructor.newInstance(); // 当然创建对象时的实参值得这时候传递了// 此时构造方法会自动执行System.out.println(student student);}空参构造还有个简写方式过时方法 了解即可 public static void main(String[] args) throws Exception { // 反射调用空参创建对象简写格式//1. 第一步永远都是先获取Class对象Class? clazz Class.forName(cn.whu.myreflect2.Student);//2. 在Class类中,有一个newInstance方法可以利用空参直接创建一个对象 (直接跳过了获得构造对象那一步)Student student (Student) clazz.newInstance(); // 该方法已经过时 了解即可System.out.println(student);}setAccessible(boolean flag) 设置为true,表示取消访问检查(可以临时使用私有成员了) ★获取一个私有的构造方法创建对象★ 多一步临时取消访问检查 public static void main(String[] args) throws Exception {//1. 第一步永远都是先获取Class对象Class? clazz Class.forName(cn.whu.myreflect2.Student);//2.获取构造私有方法对象Constructor? constructor clazz.getDeclaredConstructor(String.class);//直接创建对象会报错 毕竟私有,直接调用私有构造方法肯定不妥//也即被private修饰的成员不能直接使用//如果用反射强行获取并使用需要临时取消访问检查constructor.setAccessible(true);//临时取消(私有)访问检查//3.利用newInstance 创建Student对象Student student (Student) constructor.newInstance(张三); // 当然创建对象时的实参值得这时候传递了// 此时构造方法会自动执行System.out.println(student student);}反射可以强行获取私有方法并强行用其获取对象 2.3.3小结 获取class对象 三种方式: Class.forName(“全类名”), 类名.class, 对象名.getClass() 获取里面的构造方法对象 getConstructor (Class?... parameterTypes) getDeclaredConstructor (Class?… parameterTypes) 如果是public的直接创建对象 newInstance(Object… initargs) 如果是非public的需要临时取消检查然后再创建对象 setAccessible(boolean) 暴力反射 2.4反射获取成员变量并使用【应用】 2.4.1Class类获取成员变量对象的方法 第2步获取成员变量 (第1步已经获取了Class类对象了) 方法分类 方法名说明Field[] getFields()返回所有公共成员变量对象的数组Field[] getDeclaredFields()返回所有成员变量对象的数组Field getField(String name)返回单个公共成员变量对象Field getDeclaredField(String name)返回单个成员变量对象 公共成员变量仅仅public修饰的成员变量 所有成员变量public、private、protect… 修饰的成员变量 Student.java public class Student {public String name;public int age;public String gender;private int money 300;//3个public 仅仅int money一个private }Field[] getFields() 返回所有公共成员变量对象的数组 仅仅public public static void main(String[] args) throws Exception {//Field[] getFields() 返回所有公共成员变量对象的数组//1.第一步永远还是获取对呀类的Class对象Class clazz Class.forName(cn.whu.myreflect3.Student);//2.第二步获取Field对象Field[] fields clazz.getFields();for (Field field : fields) {System.out.println(field); //所有public成员变量}}Field[] getDeclaredFields() 返回所有成员变量对象的数组 (包括私有) public static void main(String[] args) throws Exception {//Field[] getDeclaredFields() 返回所有成员变量对象的数组 (包括私有)//1.第一步永远还是获取对呀类的Class对象Class clazz Class.forName(cn.whu.myreflect3.Student);//2.第二步获取Field对象Field[] declaredFields clazz.getDeclaredFields();for (Field declaredField : declaredFields) {System.out.println(declaredField);}}Field getField(String name) 返回单个公共成员变量对象 仅仅public public static void main(String[] args) throws Exception {//Field getField(String name) 返回单个公共成员变量对象//1.第一步永远还是获取对呀类的Class对象Class clazz Class.forName(cn.whu.myreflect3.Student);//2.第二步获取Field对象Field age clazz.getField(age); //传入变量名即可//Field age clazz.getField(age1); //倘若没有这个变量 则会报错//Field money clazz.getField(money); //私有的也会报错System.out.println(age);}Field getDeclaredField(String name) 返回单个成员变量对象 (包括私有) public static void main(String[] args) throws Exception { //Field getDeclaredField(String name) 返回单个成员变量对象//1.第一步永远还是获取对呀类的Class对象Class clazz Class.forName(cn.whu.myreflect3.Student);//2.第二步获取Field对象Field age clazz.getDeclaredField(age); // 传入变量名 获取公有变量Field money clazz.getDeclaredField(money); // 私有的也可以获取System.out.println(age);System.out.println(money);}2.4.2Field类用于给成员变量赋值的方法 第3步使用成员变量 (前面已经获取到了成员变量对象了) 方法介绍 方法名说明void set(Object obj, Object value)赋值Object get(Object obj)获取值 第一个参数就是要赋值或者获取值的 具体对象 (一个类好多对象 到底赋值给哪个对象肯定要说明一下的) 示例代码 void set(Object obj, Object value) 赋值 public static void main(String[] args) throws Exception {//void set(Object obj, Object value) 赋值//1.第一步永远还是获取对呀类的Class对象Class clazz Class.forName(cn.whu.myreflect3.Student);//2.获取age这个Filed对象Field age clazz.getField(age);//3.利用set方法进行赋值//3.1先创建一个Student对象 (不然赋值给谁呢)Student student (Student) clazz.newInstance();//空参的简写形式(跳过了获取构造方法那步)//3.2有了对象才可以给指定对象进行赋值age.set(student,18); //给student对象的age属性赋值18System.out.println(student.age);//18}Object get(Object obj) 获取值 访问私有成员都必须取消访问检查 public static void main(String[] args) throws Exception {//Object get(Object obj) 获取值//1.第一步永远还是获取对呀类的Class对象Class clazz Class.forName(cn.whu.myreflect3.Student);//2.获取age这个Filed对象Field money clazz.getDeclaredField(money);//直接获取一个私有的//3.☆想再下面访问私有成员都必须取消访问检查money.setAccessible(true);//4.调用get方法获取money值//4.1 还是得提前创建实际对象Student student (Student) clazz.newInstance();//4.2 获取指定对象的money值Object val money.get(student);System.out.println(val);//300}2.5反射获取成员方法并使用【应用】 2.5.1Class类获取成员方法对象的方法 (第2步用Class类对象获取成员方法) 方法分类 方法名说明Method[] getMethods()返回所有公共成员方法对象的数组包括继承的Method[] getDeclaredMethods()返回所有成员方法对象的数组不包括继承的Method getMethod(String name, Class?… parameterTypes)返回单个公共成员方法对象Method getDeclaredMethod(String name, Class?… parameterTypes)返回单个成员方法对象 示例代码 Student.java public class Student {// 私有无参无返回值private void fun(){System.out.println(私有的show方法,无参,无返回值);}// 公共无参无返回值public void fun1(){System.out.println(公共的fun1方法,无参,无返回值);}// 公共有参无返回值public void fun2(String name){System.out.println(公共的fun2方法,有参,无返回值, 参数为:name);}// 公共无参有返回值public String fun3(){System.out.println(公共的fun3方法,无参,有返回值, 参数为:);return zhangsan;}// 公共有参有返回值public String fun4(String name){System.out.println(公共的fun4方法,有参,有返回值, 参数为:name);return zhangsan;} }Method[] getMethods() 返回所有公共成员方法对象的数组包括继承的 public static void main(String[] args) throws Exception {//Method[] getMethods() 返回所有公共成员方法对象的数组包括继承的//1.第一步永远是先获取Class对象Class clazz Class.forName(cn.whu.myreflect4.Student);//2.获取成员方法对象Method[] methods clazz.getMethods();//所有公共成员方法for (Method method : methods) {System.out.println(method); // 所有public都打印出来了 (包括一大堆从Object里继承的)}}Method[] getDeclaredMethods() 返回所有成员方法对象的数组不包括继承的 public static void main(String[] args) throws Exception {//extracted1();//Method[] getDeclaredMethods() 返回所有成员方法对象的数组不包括继承的//1.第一步永远是先获取Class对象Class clazz Class.forName(cn.whu.myreflect4.Student);//2.获取成员方法对象Method[] declaredMethods clazz.getDeclaredMethods();//所有方法包括私有 (但继承的就获取不到了 (私有的也不会被继承))for (Method declaredMethod : declaredMethods) {System.out.println(declaredMethod);}}Method getMethod(String name, Class?… parameterTypes) 返回单个公共成员方法对象 public static void main(String[] args) throws Exception {//Method getMethod(String name, Class?… parameterTypes) 返回单个公共成员方法对象//1.第一步永远是先获取Class对象Class clazz Class.forName(cn.whu.myreflect4.Student);//2.获取成员方法对象Method fun1 clazz.getMethod(fun1);//第一个参数方法名该方法本身有参数就接着写在后面System.out.println(fun1); // public void cn.whu.myreflect4.Student.fun1()//获取有形参的方法Method fun2 clazz.getMethod(fun2, String.class); // 方法名形参1.class形参2.class ....System.out.println(fun2); // public void cn.whu.myreflect4.Student.fun2(java.lang.String)}Method getDeclaredMethod(String name, Class?… parameterTypes) 返回单个成员方法对象 (主要用来获取私有成员) public static void main(String[] args) throws Exception {//Method getDeclaredMethod(String name, Class?… parameterTypes) 返回单个成员方法对象//1.第一步永远是先获取Class对象Class clazz Class.forName(cn.whu.myreflect4.Student);//2.获取成员方法对象 私有fun方法Method fun clazz.getDeclaredMethod(fun);System.out.println(fun);//只是看一下 完全可以(不必取消访问检查)}2.5.2Method类用于执行方法的方法 第3步前面已经获取了成员方法这里该执行成员方法了 方法介绍 方法名说明Object invoke(Object obj, Object… args)运行方法参数一: 用obj对象调用该方法 参数二: 调用方法的传递的实际参数(如果没有就不写) 返回值: 方法的返回值(如果没有就不写) 示例代码 public static void main(String[] args) throws Exception {//Object invoke(Object obj, Object… args) 运行方法//参数一: 用obj对象调用该方法//参数二: 调用方法的传递的实际参数(如果没有就不写)//返回值: 方法的返回值(如果没有就不写)//1. 第一步永远是先获取Class对象Class clazz Class.forName(cn.whu.myreflect4.Student);//2. 获取里面的Method对象 fun4 最难的有参有返回值Method fun4 clazz.getMethod(fun4, String.class);//要指定方法参数类型//3. 运行方法//3.1 先得创建实际对象,作为方法的调用者(对象调用方法运行嘛)Student student (Student) clazz.newInstance();//又是简写形式(跳过了获取构造器的一步)//3.2 有了对象就可以在该对象上执行方法了Object ret fun4.invoke(student,myname); //实参 依次写在后面 有返回值就直接接收就行了System.out.println(ret);}小结反射根据配置文件动态创建对象并执行方法 小结: 1、获取Class对象 Class clazz Class.forName(cn.whu.myreflect1.Student); Class clazz2 Student.class; Class clazz3 new Student().getClass();2、通过Class对象获取三类成员 Constructor constructor clazz.getConstructor(); // 获取构造器 (详细介绍了多种方式) Method method clazz.getMethod(name); //获取方法 (详细介绍了多种方式) Field field clazz.getField(String name) // 获取变量名 (详细介绍了多种方式)3、通过获取的构造器创建对象 Object o constructor.newInstance();4、通过对象和方法执行对应方法 method.invoke(o);//学生在学习反射可以根据配置文件动态创建对象并调用对象的方法 ReflectDemo2.java package cn.whu.myreflect1;import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Properties;/*** 根据配置文件创建对象并执行对象方法*/ public class ReflectDemo2 {public static void main(String[] args) throws ClassNotFoundException, IOException, InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException {//获取系统类加载器加载prop.properties文件InputStream is ClassLoader.getSystemClassLoader().getResourceAsStream(prop.properties);//得先创建一个Properties集合Properties prop new Properties();//将文件中的数据读取到集合中prop.load(is);is.close();//---- 下面利用【反射】创建对象并调用方法 ----// 死步骤 能看懂 最好是记住//获取字节码文件对象Class clazz Class.forName(prop.getProperty(className));//配置文件里className配置好的全路径名//(通过类Class对象)获取构造器对象Constructor constructor clazz.getConstructor();//利用构造器创建一个对象Object o constructor.newInstance();//获取方法对象Method method clazz.getMethod(prop.getProperty(methodName));//配置文件里配置好的方法名//运行方法method.invoke(o);//学生在学习} } prop.properties classNamecn.whu.myreflect1.Worker methodNameworkLX 再手敲一遍读取配置文件动态创建类对象获取方法并执行 propLX.properties classNamecn.whu.LX.Worker methodNameshowWorker.java package cn.whu.LX;public class Worker {private String name;private int age;public Worker() {}public Worker(String name, int age) {this.name name;this.age age;}public String show(){System.out.println(我叫name 我今年age岁啦);//成员变量 类内部可以随便访问return 明年就(age1)岁啦;}} myreflectLX.java package cn.whu.LX;import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.Properties;public class myreflectLX {public static void main(String[] args) throws Exception {// 1.类加载器获取输入流 读取Property配置文件 获取配置信息InputStream is ClassLoader.getSystemClassLoader().getResourceAsStream(propLX.properties);Properties prop new Properties();prop.load(is);is.close();System.out.println(prop prop);String className prop.getProperty(className);String methodName prop.getProperty(methodName);System.out.println(className className);System.out.println(methodName methodName);//2.反射 动态根据(类名className)和(其方法名methodName) 创建对象 并用对象调用该方法//2.1 获取Class对象Class clazz Class.forName(className);//有了Class对象 啥都能获取了//2.2 获取有参数构造并创建对象Constructor constructor clazz.getConstructor(String.class, int.class);Worker worker (Worker) constructor.newInstance(紫英, 24);//2.3 获取方法Method method clazz.getMethod(methodName);//2.4 用对象调用方法Object ret method.invoke(worker);//该方法有返回值就接收System.out.println(ret);} }
http://www.dnsts.com.cn/news/51454.html

相关文章:

  • 网站要钱吗?怎么制作一个链接
  • 苏州市规划建设局网站网站品牌建设流程
  • 用凡科做的手机网站版专做企业网站的
  • 漳州那里有做网站网页设计作业成品导航条代码
  • 信誉好的广州做网站成都网站建设制作
  • 古镇网站建设哪家好·温州公司建设网站
  • 昆山教育云平台网站建设网站建设的技术保证怎么写
  • ps做图游戏下载网站衡水淘宝的网站建设
  • 网站建设宝安数字营销案例
  • 济阳建设局网站唐山乾正建设工程材料检测公司网站
  • 作网站流程网站备案背景
  • 建设网站需要哪些资质网站建设的软件是哪个
  • 金华建站方案电商网站难做吗
  • 公司网站一定要域名吗招商加盟网站推广方案
  • 东营网站制作婚恋网站制作
  • 为什么建设法律法规网站sem即
  • 深圳成交型网站建设公司国外域名需要备案吗
  • 怎么给自己的网站做域名58网站怎么样做效果会更好
  • 成都哪家做网站公司好深圳线上网络推广公司
  • 郑州做网站好门窗专业设计网站
  • 物流企业网站建设策划书6怎么发帖子做推广
  • 无锡网站建设制作设计一鸿建设设计网站
  • 做网站的技术关键本地搭建asp网站
  • 网站有二级域名做竞价自己个人怎样做电商
  • 电商设备网站怎么做认养农业app模式定制开发
  • 深圳网站设计设计郑州网站优化seo
  • 江苏外贸型网站制作自适应wordpress
  • 做网站服务器和域名wordpress看板猫
  • 做ppt素材的网站青岛黄岛区网站开发
  • 海口房产网站建设网站性能需求