本系列博客汇总在这里:框架基础 汇总
通过反射方式赋值
代码演示
package cn.wyx.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ReflectDemo2
{
public static void main(String[] args) throws Exception
{
Class<?> class1 = Class.forName("cn.wyx.reflect.Person");
// 获得构造器
Constructor<?> constructor = class1.getDeclaredConstructor(new Class[] {});
// 根据类的默认构造器来获得一个对象
Object instance = constructor.newInstance(new Object[] {});
System.out.println(instance);
// 获得类的所有方法
Method[] methods = class1.getDeclaredMethods();
for (Method m : methods)
{
// 获得方法的名字
String name = m.getName();
// 获得是否以set开始
boolean startsWith = name.startsWith("set");
if (startsWith)
{
// 获得到了set字符串的后面的值
String fieldName = name.substring(3);
// 获得属性的名字
fieldName = fieldName.substring(0, 1).toLowerCase() + fieldName.substring(1);
// 获得方法所对应的属性
Field field = class1.getDeclaredField(fieldName);
// 获得属性的具体类型,获得属性对应的类型
Class<?> type = field.getType();
if (type == Integer.class)
{
// 反射调用set方法
m.invoke(instance, new Object[] { 1 });
}
if (type == String.class && "address".equals(fieldName))
{
// 反射调用set方法
m.invoke(instance, new Object[] { "北京" });
}
if (type == String.class && "name".equals(fieldName))
{
// 反射调用set方法
m.invoke(instance, new Object[] { "魏宇轩" });
}
}
}
System.out.println(instance);
}
}
package cn.wyx.reflect;
public class Person
{
private Integer id;
private String name;
private String address;
public Person()
{
}
public Person(Integer id, String name, String address)
{
super();
this.id = id;
this.name = name;
this.address = address;
}
private static void printInfo()
{
System.out.println("静态方法的反射调用");
}
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getAddress()
{
return address;
}
public void setAddress(String address)
{
this.address = address;
}
@Override
public String toString()
{
return "Person [id=" + id + ", name=" + name + ", address=" + address
+ "]";
}
}
如有错误,欢迎指正!