利用反射,找出某类的所有方法,构造器和全部域名
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()+";");
}
}
}
}
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()+";");
}
}
}
}
相关文章推荐
- 利用反射输出类的结构:方法、构造器签名和全部域名
- java中利用反射机制得到一个类的所有构造方法,成员方法机器参数的列表
- 从头认识java-12.4 利用反射提取类的方法与构造器
- Java反射学习(利用反射遍历链表并执行所有对象的所有get方法)
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 利用反射获取一个类中的所有方法和该方法的参数
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 利用反射获取实体所有属性和方法
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 利用反射打印出 Jar包中所有的类名和方法
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 从头认识java-12.4 利用反射提取类的方法与构造器
- C# 利用反射,遍历获得一个类的所有属性名,方法名,成员名
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- C# 利用反射,遍历获得一个类的所有属性名,方法名,成员名.