java反射

package d;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Arrays;

import com.sun.org.apache.xpath.internal.functions.FuncBoolean;
public class ClassTest
{
	int age;
	String name;
	public ClassTest(int age,String name)
	{
		this.age=age;
		this.name=name;
	}
	public static int fun(int a,String b)
	{
		System.out.println("此方法有个数参数:a="+a+"b="+b);
		System.out.println("nihao");
		return a;
	}
	public static void fun()
	{
		System.out.println("你啊好哦");
	}
	public static void main(String[] args) 
	{
	
			String className1=args[0];
			
			System.out.println(className1);
			try {
			Class cls1=Class.forName(className1);//获取类名cl
			
			Object object=null;
			int cout=Integer.parseInt(args[1]);//获取了参数个数
			Class [] cl1 =new Class[cout];
			//形参列表
			Object [] obj1= new Object[cout];//实参列表
			
			if(cout==0)
			{
				object=cls1.newInstance();
			}
		
			for(int i=0;i<cout;i++)
			{
				if(args[2+i].equals("String"))
				{
					cl1[i]=String.class;
					obj1[i]=args[2+i+cout];
					
				}
				if(args[2+i].equals("int"))
				{
					cl1[i]=int.class;
					obj1[i]=Integer.parseInt(args[2+i+cout]);
					
				}
				if(args[2+i].equals("float"))
				{
					cl1[i]=float.class;
					obj1[i]=Float.parseFloat(args[2+i+cout]);
					
				}
				if(args[2+i].equals("boolean"))
				{
					cl1[i]=boolean.class;
					obj1[i]=Boolean.parseBoolean(args[2+i+cout]);
					
				}
				if(args[2+i].equals("char"))
				{
					cl1[i]=char.class;
					obj1[i]=args[2+i+cout].charAt(0);
				}
			}
			
			Constructor con1=cls1.getConstructor(cl1);
			Object result=con1.newInstance(obj1);
			System.out.println(result);
			String methodName1=args[2+2*cout];//方法名称
			int mecount=Integer.parseInt(args[3+2*cout]);//方法的个数
			Class []meClasses=new Class[mecount];//方法的形式参数列表
			Object [] meObjects=new Object[mecount];//方法的实际参数列表
			//转换方法的形式参数列表
			for(int i=0;i<mecount;i++)
			{
				if(args[4+2*cout+i].equals("int"))
				{
					meClasses[i]=int.class;
					meObjects[i]=Integer.parseInt(args[4+2*cout+i+mecount]);
				}
				if(args[4+2*cout+i].equals("String"))
				{
					meClasses[i]=String.class;
					meObjects[i]=args[4+2*cout+i+mecount];
				}
				if(args[4+2*cout+i].equals("char"))
				{
					meClasses[i]=char.class;
					meObjects[i]=args[4+2*cout+i+mecount].charAt(0);
				}
				if(args[4+2*cout+i].equals("boolean"))
				{
					meClasses[i]=boolean.class;
					meObjects[i]=Boolean.parseBoolean(args[4+2*cout+i+mecount]);
				}
				if(args[4+2*cout+i].equals("float"))
				{
					meClasses[i]=float.class;
					meObjects[i]=Float.parseFloat(args[4+2*cout+i+mecount]);
				}
			}
			
			Method  m1=cls1.getMethod(methodName1, meClasses);
			m1.invoke(object,meObjects);
		
			
			}catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
				
			}
	}
	
}
class Teacher
{
	int age;
	String name;
	public Teacher(int age,String name)
	{
		this.age=age;
		this.name=name;
	}
	public static int fun(int a,int b)
	{
		return a+b;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值