您的位置:首页 > 编程语言 > Java开发

利用反射,找出某类的所有方法,构造器和全部域名

2016-08-14 07:45 218 查看
获得一个类cla后,一定要知道三个方法cla.getFields();cla.getMethods();cla.getConstructors();才可以更好的利用cla

package com.bdw;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Scanner;

public class Mainboard
{
public static void main(String[]args)
{
Scanner in=new Scanner(System.in);
System.out.println("Input class name :");
String name=in.next();
Class cla=null;
try {
cla=Class.forName(name);

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(cla!=null)
{
String modifier = Modifier.toString(cla.getModifiers());
Class supcla=cla.getSuperclass();
if(modifier.length()>0)
{
System.out.print(modifier+" class "+cla.getName());
}
if(supcla!=null)
{
System.out.println(" extends "+supcla.getName());
}
System.out.println("{");
printConstructors(cla);
printMethods(cla);
printField(cla);
System.out.println("}");
}

}
public static void printConstructors(Class cla)
{
Constructor []con=cla.getDeclaredConstructors();
for(Constructor co:con)
{
String st=Modifier.toString(co.getModifiers());
if(st.length()>0)
System.out.print(st+" "+co.getName()+"(");
Class []ob=co.getParameterTypes();
for(int i=0;i<ob.length;++i)
{
if(i!=ob.length-1)
System.out.print(ob[i]+",");
else
System.out.print(ob[i]);
}
System.out.println( ");" );
}
}
public static void printMethods(Class cla)
{

Method []me=cla.getMethods();
for(int i=0;i<me.length;++i)
{
String modi=Modifier.toString(cla.getModifiers());
if(modi.length()>0)
{
System.out.print(modi+" "+me[i].getReturnType()+" "+me[i].getName()+"(");
Class[] para=me[i].getParameterTypes();
for(int j=0;j<para.length;++j)
{
if(j!=para.length-1)
{
System.out.print(para[j]+",");
}
else
{
System.out.print(para[j]);
}
}
System.out.println(");");
}
}

}
public static void printField(Class cla)
{
Field[] fi= cla.getFields();
for(int i=0;i<fi.length;++i)
{
String st=Modifier.toString(fi[i].getModifiers());
if(st.length()>0)
{
System.out.println(st+" "+fi[i].getType()+" "+fi[i].getName()+";");
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息