62,628
社区成员
发帖
与我相关
我的任务
分享
class A{
public String str1;
public String str2;
public A(){
}
}
public Object getA(String aname){
Object o=null;
Class<?> c;
try {
c = Class.forName(aname);
try {
o = c.newInstance();
//想在这里给str1和str2赋值
//c.getField("filedname")可以获取到字段,get(object)可以取到字符的值,但set(object,object)测试赋值不成功
//问题是这里怎样给str1和str2赋值
//如以下形式:
c.getField("str1").set(str1,"wert");// 这句无效且出错
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return o;
}
public String getFiledForName(String f_name){
A o=(A)getA("A");
System.out.println(o.str1);
return o.str1;
}
package com;
import java.lang.reflect.Field;
public class ATest {
public Object getA(String aname){
Object o=null;
Class<?> c;
try {
c = Class.forName(aname);
o = c.newInstance();
Field field = c.getDeclaredField("str1");
field.set(o, "wert");
} catch (Exception e1) {
e1.printStackTrace();
}
return o;
}
public String getFiledForName(String f_name){
A o=(A)getA("com.A");
System.out.println(o.str1);
return o.str1;
}
public static void main(String[] args) {
ATest a = new ATest();
a.getFiledForName(null);
}
}
class A{
public String str1;
public String str2;
public A(){
}
}