类的调用(调用类中的成员)
来源:互联网 发布:网络搭建全套教程 编辑:程序博客网 时间:2024/05/16 01:48
构造类对象
使用构造器新建对象。根据指定的参数类型找到相应的构造函数,传入相应参数调用执行,以创建一个新的对象实例。
private static void operateConstructor(String className) throws Exception{Class clazz = Class.forName(className);//调无参public的构造方法,太简单了,直接调newInstance();//Object obj = clazz.newInstance();//相当于要实现: Person p = new Person("Jack",10);//1先获取“Person(String name, int age)”这个构造方法--Constructor对象--conClass parameterTypes[] = new Class[2]; //组织形参parameterTypes[0] = String.class;//parameterTypes[1] = int.class;//※※※Person类中的构造方法为“public Person(String name, int age)”时,OK。但构造方法为“public Person(String name, Integer age)”时,WA。//parameterTypes[1] = Integer.class; //当构造方法为“public Person(String name, int age)”时,不行,因为它会在匹配构造方法时,严格匹配第2个参数为“Integer”的构造方法,不会自动装箱拆箱parameterTypes[1] = Integer.TYPE; //※※※该TYPE属性即是int。当Person类中的构造方法为“public Person(String name, int age)”时,OK。但构造方法为“public Person(String name, Integer age)”时,WA。Constructor con = clazz.getConstructor(parameterTypes);//2然后把参数“Jack,10”传入,调用该"Constructor对象--con"的newInstance方法,进行创建对象 //组织实参 Object params[] = new Object[2]; params[0] = new String("Jack"); params[1] = new Integer(20); //调用构造方法 Object retObj = con.newInstance(params);System.out.println(retObj);}
调用方法
根据方法名称执行方法。根据方法名与参数类型匹配指定的方法,传入相应参数与对象进行调用执行。若是静态方法,则不需传入具体对象。
private static void callMethod(String className) throws Exception{Class clazz = Class.forName(className);//※调用空参方法//1先获取Method对象Method method = clazz.getMethod("toString", null);Object obj = clazz.newInstance();//2再执行该Method对象的invoke()方法 Object returnValue = method.invoke(obj, null);//obj.toString();//Person p = new Person("Jack",30);//Object returnValue = method.invoke(p, null);System.out.println(returnValue);//※调用带参数的方法//1先获取Method对象--m--需要先构造形参,通过形参找到对应的方法Class paramTypes[] = new Class[2];paramTypes[0] = Integer.TYPE;paramTypes[1] = double.class;Method m = clazz.getMethod("sum",paramTypes );//2再执行该Method对象的invoke()方法 -----需要一个对象obj,还需要相应的实参Object obj2 = clazz.newInstance();Object params2[] = new Object[2];params2[0] = 100;params2[1] = 123.5;Object retObj2 = m.invoke(obj2,params2 );System.out.println("retObj2= "+retObj2);//※调用静态方法Method m2 = clazz.getMethod("show", null);m2.invoke(null, null);//对象用null}
获取设置属性
根据属性名称读取与修改属性的值,访问非静态属性需传入对象为参数。
private static void changeFieldValue(String className) throws Exception{Class clazz = Class.forName(className);Field fld = clazz.getField("age");Object p = clazz.newInstance();//fld.setInt(p, 100);//System.out.println(fld.getInt(p));fld.set(p, 66);Object retObj = fld.get(p);System.out.println(retObj);}
0 0
- 类的调用(调用类中的成员)
- 【类反射】类的调用(调用类中的成员:成员变量、方法、构造方法)
- 类的调用(调用类中成员)、暴力访问
- 成员方法的反射:调用类中的main方法
- mfc中类中的成员变量的调用问题
- 定义和调用类中的成员
- 类成员函数调用
- c++类的成员函数的调用
- 函数指针调用类的成员函数
- Java.关于类中成员的调用
- 类成员函数之间的调用
- 类成员函数调用的细节
- 类模板成员函数的调用问题
- PHP 成员方法和类的调用
- 父类调用子类的成员变量
- 函数指针调用类的成员函数
- 调用其他类成员变量的方法
- java中类成员和实例成员调用的区别
- 迷宫问题
- Android-->EventBus 3.0新版使用说明(及其使用方法)
- 单链表(创建<14种功能>,逆序,合并)
- [Java Concurrency in Practice]第九章 图形用户界面应用程序
- Quartz2D
- 类的调用(调用类中的成员)
- jQuery 实现tr重新排列
- PE文件详解之PE文件头
- java基础 面向对象3
- Why Is the Network in Ubuntu That Slow!!
- maven-shade-plugin 打包
- 三维三维三维树状数组模板题 hdu 3584 Cube
- 双向链表(无注释...慎入)
- JS知识点搜集