码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-07-01 22:14:16      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:生成帮助文档   反射   java      class   

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

掌握发射主要了解这几个类,类位于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 类名 
@param funcName 方法名
@param paras   方法参数
@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 类名    那么就生成了帮助文档了。

例如:

技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:生成帮助文档   反射   java      class   

原文地址:http://blog.csdn.net/u011521890/article/details/46714857

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!