我想实现一个从定义指定(int)值的接口返回字段的方法。我没有接口的来源。
所以,签名可能是这样的:
public ArrayList<String> getFieldnames(Object src, int targetValue);
我假设在内部它可以找到声明的字段并根据值测试每个字段,返回列表。
ArrayList<String> s = new ArrayList<String>();
if( src!= null )
{
Field[] flist = src.getClass().getDeclaredFields();
for (Field f : flist )
if( f.getType() == int.class )
try {
if( f.getInt(null) == targetValue) {
s.add(f.getName());
break;
}
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
}
}
return s;
不幸的是,这个实现是不正确的——当用接口本身调用时,就好像根本没有字段一样。如果我传递一个实现接口的对象,可能的字段列表将太宽而无法使用。
谢谢你的帮助!