package c;
import java.lang.reflect.Array;
import java.util.Arrays;
/**
* 通过反射调用数组
* @author Administrator
*
*/
public class InvokeArrayTest
{
public static void main(String[] args)
{
int temp[]= {1,2,3};
int newtemp[]=(int[]) arrayInc(temp, 5);
System.out.println("数组的内容"+Array.get(newtemp, 1));
print(newtemp);
}
//定义一个方法,用于扩充数组的长度
public static Object arrayInc(Object obj,int len0)
{
Class<?> c1=obj.getClass();
Class<?> arr1=c1.getComponentType();//得到数组的类型
Object newO=Array.newInstance(arr1, len0);//创建一个新数组(数组类型,数组长度)
int co=Array.getLength(obj);//数组的长度
System.arraycopy(obj, 0, newO, 0, co);//数组复制
return newO;//返回新数组的名称
}
//定义一个方法,用于输出所有的数组的内容
public static void print(Object obj)
{
Class<?> c=obj.getClass();
if(!c.isArray())//判断是不是数组1
{
return;
}
Class<?> arr=c.getComponentType();
//System.out.println(arr.getName()+"数组的长度:"+Array.getLength(arr));
for(int i=0;i<Array.getLength(obj);i++)
{
System.out.print(Array.get(obj,i)+",");
}
}
}
package c;
import java.lang.reflect.Method;
/**
* 通过反射调用getter和set方法
*
* @author Administrator
*
*/
public class InvokeFieldTest
{
public static void main(String[] args)
{
Class<?> c1 = null;
Object obj1 = null;
try
{
c1 = Class.forName("c.Person");
obj1 = c1.newInstance();// 实例化Class对象
setter(obj1, "name", "郑云飞", String.class);
getter(obj1, "name");
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void setter(Object obj, String att, Object value,Class<?> type)
{
Method m;
try
{
m = obj.getClass().getMethod("set"+initStr(att),type);
m.invoke(obj, value);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void getter(Object obj,String att)
{
try
{
Method m=obj.getClass().getMethod("get"+initStr(att));
System.out.println(m.invoke(obj));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static String initStr(String old)
{
String string=old.substring(0,1).toUpperCase()+old.substring(1);
return string;
}
}