本文主要是介绍利用java反射实现自动set,get操作的两种实现总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一种:
public static void main(String[] args) throws Exception
{
Class c = Class.forName("com.gu.test.mytest.Teacher");
Object obj = c.newInstance();
Field[] fields = c.getDeclaredFields();
// 写数据
for(Field field : fields)
{
PropertyDescriptor pd = new PropertyDescriptor(field.getName(), c);
Method wMethod = pd.getWriteMethod();
Class[] cs = wMethod.getParameterTypes();
if(cs[0].getName().contains("String"))
{
System.out.println("String");
wMethod.invoke(obj, "学习");
}
else if(cs[0].getName().contains("Integer"))
{
System.out.println("Integer");
wMethod.invoke(obj, 10);
}
}
// 读数据
for(Field field : fields)
{
PropertyDescriptor pd = new PropertyDescriptor(field.getName(), c);
Method rMethod = pd.getReadMethod();
Class cs = rMethod.getReturnType();
if(cs.getName().contains("String"))
{
System.out.println("Name==>" + (String) rMethod.invoke(obj));
}
else if(cs.getName().contains("Integer"))
{
System.out.println("Age==>" + (Integer) rMethod.invoke(obj));
}
}
}
第二种:
public static void main(String[] args) throws Exception
{
Teacher teacher = new Teacher();
// 获取Class对象
Class c = teacher.getClass();
// 通过c对象获取到c中所有的属性 getDeclaredFields可以获取到private属性的字段
Field[] fields = c.getDeclaredFields();
// Field[] fields = c.getFields();
for(Field field : fields)
{
System.out.println(field.getName());
}
// 通过c对象获取到c中所有的方法
Method[] methods = c.getMethods();
// 写操作
for(Method method : methods)
{
if(method.getName().startsWith("set"))
{
String parameterType = method.getParameterTypes()[0].getName();
if(parameterType.contains("String"))
{
method.invoke(teacher, "学习");
}
else if(parameterType.contains("Integer"))
{
method.invoke(teacher, 10);
}
}
}
// 读操作
for(Method method : methods)
{
if(method.getName().startsWith("get") && !method.getName().startsWith("getClass"))
{
Object object = method.invoke(teacher, null);
if(object instanceof String)
{
System.out.println("Name=" + object);
}
else if(object instanceof Integer)
{
System.out.println("Age=" + object);
}
}
}
}
这篇关于利用java反射实现自动set,get操作的两种实现总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!