用反射获取一个类的构造器,方法和字段

用反射获取一个类的构造器字段和方法

import java.util.*;
import java.lang.reflect.*;
public class ReflectTest{
	public static void main(String[]args)throws ReflectiveOperationException{
	String name;
	if(args.length>0)name=args[0];
	else{
	Scanner in=new Scanner(System.in);
	System.out.println("Enter class name (e.g. java.util.Date): ");
	name=in.next();
	}
	Class c1=Class.forName(name);
	Class supercl=c1.getSuperclass();
	String modifiers=Modifier.toString(c1.getModifiers());
	if(modifiers.length()>0)
		System.out.print(modifiers+" ");
	System.out.print("class  "+name);
	if(supercl!=null&&supercl!=Object.class)
		System.out.print(" extends "+supercl.getName());
	System.out.print("\n{\n");
	printConstructors(c1);
	System.out.println();
	printMethods(c1);
	System.out.println();
	printFields(c1);
	System.out.println("}");
	}
	public static void printConstructors(Class c1){
	Constructor[] constructors=c1.getDeclaredConstructors();
	for(Constructor c:constructors){
	String  name=c.getName();
	System.out.print("   ");
	String modifiers=Modifier.toString(c1.getModifiers());
	if(modifiers.length()>0)
		System.out.print(modifiers+" ");
	System.out.print(name+"(");
	Class[]paramTypes=c.getParameterTypes();
	for(int j=0;j<paramTypes.length;j++){
	if(j>0)System.out.print(", ");
	System.out.print(paramTypes[j].getName());
	}
	System.out.println(");");
	}
	}
	public static void printMethods(Class c1){
	Method[]methods=c1.getDeclaredMethods();
	for(Method m:methods){
	Class retType=m.getReturnType();
	String name=m.getName();
	System.out.print("   ");
	String modifies=Modifier.toString(m.getModifiers());
	if(modifies.length()>0)
		System.out.print(modifies+" ");
	System.out.print(retType.getName()+" "+name+"(");
	Class[]paramTypes=m.getParameterTypes();
	for(int j=0;j<paramTypes.length;j++){
	if(j>0)
		System.out.print(", ");
	System.out.print(paramTypes[j].getName());
	}
	System.out.println(");");
	}
	}
	public static void printFields(Class c1){
	Field[]fields=c1.getDeclaredFields();
	for(Field f:fields){
	Class type=f.getType();
	String name=f.getName();
	System.out.print("   ");
	String modifiers=Modifier.toString(f.getModifiers());
	if(modifiers.length()>0)
		System.out.print(modifiers+" ");
	System.out.println(type.getName()+" "+name+";");
	}
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值