1 回答
TA贡献1862条经验 获得超7个赞
不确定我是否完全理解你的问题,但你可以这样做:
Map<Integer,Method> cc = new HashMap<>();
cc.put(1, User.class.getDeclaredMethod("getCustomer"));
cc.put(2, User.class.getDeclaredMethod("getNotes"));
cc.put(3, User.class.getDeclaredMethod("getCustomerLocation"));
cc.put(4, User.class.getDeclaredMethod("getReferenceNumber"));
for (Entry<Integer, Method> map : cc.entrySet()) {
Integer index = map.getKey();
Method getter = map.getValue();
Object value = getter.invoke(user);
doSomethingUsefulWith(index, value);
}
更新:
你可以Getter像这样声明一个接口:
public interface Getter<T,R> {
public R get(T obj);
}
然后做这样的事情:
Map<Integer,Getter<User,?>> cc = new HashMap<>();
cc.put(1, (u) -> u.getCustomer().getName());
cc.put(2, (u) -> u.getNotes());
cc.put(3, (u) -> u.getCustomerLocation());
cc.put(4, (u) -> u.getReferenceNumber());
for (Entry<Integer,Getter<User,?>> map : cc.entrySet()) {
Integer index = map.getKey();
Getter<User,?> getter = map.getValue();
Object value = getter.get(user);
doSomethingUsefulWith(index, value);
}
添加回答
举报