package hashMap;
import java.io.FileInputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
class ReflectTest
{
//用反射产生对象并返回该对象
public Object getObject(Class cl,String[] args) throws Exception
{
int con_Count = Integer.parseInt(args[1]);
Object o = null;
if(con_Count==0)
{
o = cl.newInstance();
}
else
{
Class[] con_Args = new Class[con_Count];
Object[] obj_Args = new Object[con_Count];
Object[] oo = null;
for(int i=0;i<con_Count;i++)
{
oo = turn(args[2+i],args[2+i+con_Count]);
con_Args[i] = (Class)oo[0];
obj_Args[i] = oo[1];
}
Constructor con = cl.getDeclaredConstructor(con_Args);
o = con.newInstance(obj_Args);
}
return o;
}
//用反射执行某一方法并返回结果
public Object invoke(Class cl,Object o,String[] args) throws Exception
{
int con_Count = Integer.parseInt(args[1]);
String methodName = args[2+2*con_Count];
int me_Count = Integer.parseInt(args[3+2*con_Count]);
Class[] me_Args = new Class[me_Count];
Object[] me_Obj_Args = new Object[me_Count];
Object[] oo = null;
for(int i=0;i<me_Count;i++)
{
oo = turn(args[4+2*con_Count+i],args[4+2*con_Count+i+me_Count]);
me_Args[i] = (Class)oo[0];
me_Obj_Args[i] = oo[1];
}
Method m = cl.getDeclaredMethod(methodName,me_Args);
Object res = m.invoke(o,me_Obj_Args);
//System.out.println("方案执行结果:"+res);
return res;
}
public Object[] turn(String cType,String oArg)
{
Object[] o = new Object[2];
if(cType.equals("int"))
{
o[0] = int.class;
o[1] = Integer.parseInt(oArg);
}
if(cType.equals("String"))
{
o[0] = String.class;
o[1] = oArg;
}
if(cType.equals("float"))
{
o[0] = float.class;
o[1] = Float.parseFloat(oArg);
}
if(cType.equals("char"))
{
o[0] = char.class;
o[1] = oArg.charAt(0);
}
if(cType.equals("boolean"))
{
o[0] = boolean.class;
o[1] = Boolean.parseBoolean(oArg);
}
return o;
}
}
public class PropertiesTest
{
public static void main(String[] args) throws Exception
{
Properties p = new Properties();
p.load(new FileInputStream("test.ini"));
List list = new ArrayList();
Enumeration<String> e = (Enumeration<String>) p.propertyNames();
while(e.hasMoreElements())
{
String key = e.nextElement();
byte[] data = p.getProperty(key).getBytes("iso8859-1");
System.out.println(key+"="+new String(data,"gb2312"));
list.add(key);
}
Collections.sort(list);
//System.out.println(list);
String[] s = new String[list.size()];
for(int i=0;i<list.size();i++)
{
// System.out.println(p.getProperty((String) list.get(i)));
byte[] data = p.getProperty((String) list.get(i)).getBytes("iso8859-1");
list.set(i,new String(data,"gb2312"));
s[i]=(String) list.get(i);
}
ReflectTest rt = new ReflectTest();
Class cl = Class.forName(s[0]);
Object o = rt.getObject(cl,s);
rt.invoke(cl,o,s);
}
}
class TTest
{
public int a;
public String name;
public TTest(int a,String name)
{
this.a=a;
this.name=name;
}
public static void ff(int n,String m)
{
System.out.println("你传入的证书是:"+n+m);
}
// public static void f()
// {
// System.out.println("我是一个什么参数都不带的函数");
// }
}