Field 获得另外一个类的字段及方法
package initialization;
import java.lang.reflect.Field;
public class FactoryClassByName {
//传入类的对象及数组类型的字段名,返回数组类型的字段(包含值)
public String[] getStringArray(String name,Object pd) {
String[] result=null;
// TODO Auto-generated method stub
// 得到数据类的所有已声明字段的fields
Field[] fields = pd.getClass().getDeclaredFields();
// 遍历fields
if (fields.length != 0) {
for (int j = 0; j < fields.length; j++) {
try {
String varName = fields[j].getName();
Object varType = fields[j].get(pd).getClass().getName();
// 判断得到的数组名是否是需要的数组 判断得到的类型是否是相应的类型
if (varName.equals(name)
&& varType.equals("[Ljava.lang.String;")) {
// 获取原控制权限
boolean accessFlag = fields[j].isAccessible();
// 判断并修改控制权限
if (accessFlag == false) {
fields[j].setAccessible(true);
}
result=(String[]) fields[j].get(pd);
// 恢复原控制权限
fields[j].setAccessible(accessFlag);
return result;
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
}
package initialization;
import java.lang.reflect.Field;
public class FactoryClassByName {
//传入类的对象及数组类型的字段名,返回数组类型的字段(包含值)
public String[] getStringArray(String name,Object pd) {
String[] result=null;
// TODO Auto-generated method stub
// 得到数据类的所有已声明字段的fields
Field[] fields = pd.getClass().getDeclaredFields();
// 遍历fields
if (fields.length != 0) {
for (int j = 0; j < fields.length; j++) {
try {
String varName = fields[j].getName();
Object varType = fields[j].get(pd).getClass().getName();
// 判断得到的数组名是否是需要的数组 判断得到的类型是否是相应的类型
if (varName.equals(name)
&& varType.equals("[Ljava.lang.String;")) {
// 获取原控制权限
boolean accessFlag = fields[j].isAccessible();
// 判断并修改控制权限
if (accessFlag == false) {
fields[j].setAccessible(true);
}
result=(String[]) fields[j].get(pd);
// 恢复原控制权限
fields[j].setAccessible(accessFlag);
return result;
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
}