日期:2014-05-20  浏览次数:20774 次

我这种情况,怎么用反射,大侠帮忙
我现在是有两个javaBean   比如   Employee和Factory,我在主函数里面创建两个它们的对象,给属性赋值。因为它们都是放在List里面的(list里面只放它们之一),因为取出来的对象不确定,所以要用反射取他们的对象和对应的属性值,这样该怎么弄啊。

------解决方案--------------------
Objecto = list.get(0);
if(o instanceof Employee){
Employee e = (Employee)o;
......
}else if(o instanceof Factory){
Factory f = (Factory)o;
......
}
------解决方案--------------------
取出来的对象不确定?

Object object = list.get(i);
if (object instanceof new Employee)
{
Employee employee = (Employee)object
employee.set();
....
}


------解决方案--------------------
public class TestReflect
{
public static void main(String[] args) throws SecurityException, IllegalArgumentException, IllegalAccessException
{
java.util.List list=new java.util.ArrayList();
Employee employee=new Employee( "雇员甲 ");
Factory factory=new Factory( "工厂甲 ");
list.add(employee);
list.add(factory);
for(java.util.Iterator i=list.iterator();i.hasNext();)
{
Object temp=i.next();
System.out.println( "类名 : "+temp.getClass().getName());
java.lang.reflect.Field[] fields=temp.getClass().getDeclaredFields();
for(int ii=0;ii <fields.length;ii++)
{
System.out.println(fields[ii].getName()+ " : "+fields[ii].get(temp));
}
System.out.println( "________________________________________ ");
}
}
}

class Employee
{
String employeeName;
Employee(String employeeName)
{
this.employeeName=employeeName;
}
}

class Factory
{
String factoryName;
Factory(String factoryName)
{
this.factoryName=factoryName;
}
}
------解决方案--------------------
import java.util.ArrayList;
import java.util.List;
import java.lang.reflect.Method;
import java.lang.reflect.Field;

class Employee{
public static final String CLASS_NAME= "employee ";
private String id;
private String name;
/**
* @return id
*/
public String getId() {
return id;
}
/**
* @param id 要设置的 id
*/
public void setId(String id) {
this.id = id;
}
/**
* @return sex
*/
public String getName;
/**() {
return sex;
}
/**
* @param sex 要设置的 sex
*/
public void setName(String name) {
this.name = name;
}

}
class Factory {
public static final String CLASS_NAME= "factory ";
public String factoryName = null;

public String factoryId = null;

public String getFactoryName() {
return factoryName;
}

public void setFactoryName(String factoryName) {
this.factoryName = factoryName;
}

public String getFactoryId() {
return factoryId;
}

public void setFactoryId(String factoryId) {
this.factoryId = factoryId;
}
}

public class RefObject {
public static String getType(Object o){
Field[] f=o.getClass().getDeclaredFields();
String type= " ";
for(int i=0;i <f.length;i++){
if( "CLASS_NAME ".equals(f[i].getName())){
try {
type=f[i].get( "CLASS_NAME ").toString();
} catch (IllegalArgumentException e) {