调用构造函数和成员方法、制作帮助文档

今天学习了关于反射的相关知识,,通过反射可以找到类中的构造方法和所有的成员方法。而并不了解这个类的构造的人可以很方便的运用反射机制。

掌握发射主要了解这几个类,类位于java.long.reflect包中:

Class类:代表一个 类

Constructor类:代表累的构造方法

Field类:代表类中的成员变量

Method类:代表类的方法

import java.lang.reflect.*;

/**这是一个反射机制的例子实例,包括如何利用反射找到无参、有参的构造方法,以及其他方法。@author lzl@version v1.1*/public class ReflectDemos{/**无参构造方法*/public ReflectDemos(){}/**带一个参数的构造方法@param age 年龄*/public ReflectDemos(int age){System.out.println("my age is 15");}/**带两个参数的构造方法@param age 年龄@param name 名字*/public ReflectDemos(String name,int age){System.out.println("my name is A and age is 18");}/**无参成员方法*/public void fun1(){System.out.println("this is fun1 Constructor");}/**带两个参数的方法@param age 年龄@param name 名字*/public void fun2(String name ,int age){System.out.println("this is fun2 Constructor"+name+age);}/**带一个参数的构造方法@param age 年龄@param name 名字*/public void fun3(String name){System.out.println("this is fun3 Constructor"+name);}/**利用反射机制得到所有的构造方法实例@param className 类名*/public static void getConstructors(String className){try{Class classInfo = Class.forName(className); //传入一个类名,得到相应的对象Constructor con[] = classInfo.getConstructors(); //通过getConstructors()得到该类中所有的构造方法//构造函数类似于栈的形式存储在内存中,因此按照先进后出的顺序。con[0]表示的是public A(String name,int age)构造函数/**newInstance() 创建此 Class 对象所表示的类的一个新实例。相当于 new ReflectDemos();*/con[0].newInstance(new Object[]{"lzl",18});con[1].newInstance(new Object[]{18});con[2].newInstance();}catch(Exception e){}}/**得到类中所有方法的实例@param className 类名*/public static void getMethods(String className){try{Class classInfo = Class.forName("ReflectDemos"); //传入一个类名,得到相应的对象Object obj = classInfo.getConstructor().newInstance(); //调用无参构造函数,生成新的实例对象/**Method getMethod(String name, Class<?>… parameterTypes) 返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。 Object invoke(Object obj, Object… args)对带有指定参数的指定对象调用由此 Method 对象表示的底层方法*///调用无参成员方法fun1() Method mt1 = classInfo.getMethod("fun1");mt1.invoke(obj);//调用1个参数的成员方法fun3()Method mt2 = classInfo.getMethod("fun3",String.class);mt2.invoke(obj,new Object[]{"lzl"});//调用2个参数的成员方法fun3()Method mt3 = classInfo.getMethod("fun2",String.class,int.class);mt3.invoke(obj,new Object[]{"lzl",22});}catch(Exception e){}}/**得到指定方法的实例@param className 类名@paramfuncName 方法名@paramparas 方法参数@return 返回boolean型*/public static boolean process(String className,String funcName,Object[] paras)throws Exception{Class classInfo = Class.forName(className);//形成函数参数序列——>通俗的说就是找到方法中所传入的 参数成员Class c[] = new Class[paras.length];for(int i=0;i<c.length;i++){c[i] = paras[i].getClass();}//获得无参构造函数,实例化对象Object obj = classInfo.getConstructor().newInstance();//得到类的方法/**Method getMethod(String name, Class<?>… parameterTypes) 返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。 Object invoke(Object obj, Object… args)对带有指定参数的指定对象调用由此 Method 对象表示的底层方法*/Method mt = classInfo.getMethod(funcName,c); mt.invoke(obj,paras);return true;}public static void main(String []args){try{boolean flag = ReflectDemos.process("ReflectDemos","fun1",new Object[]{});}catch(Exception e){}}

}

今天还学习了制作帮助文档的方法,首先帮助文档要写注释,按照下述注释的格式

/**

@author 作者名

@version 版本号

*/

/**

@param 参数 解释

@return 解释

*/

在doc窗口中输入:javadoc -d 文件名 -author -version 类名 那么就生成了帮助文档了。

例如:

快乐时,想想我的影子,我会在云上为你喝彩

调用构造函数和成员方法、制作帮助文档

相关文章:

你感兴趣的文章:

标签云: