在每个结果上迭代map和run方法 - APEX

时间:2014-06-30 15:37:12

标签: java loops map apex-code

我希望检查Opportunity对象上所有字段的字段级安全性。 因此,我获取了完整的字段映射并将它们存储在静态变量中,以便我可以从任何需要的地方访问它们。

private static Map<String, Schema.SObjectField> myMap;

private static void initMaps() {
    myMap = Schema.SObjectType.Opportunity.fields.getMap();
}

我想迭代对象上的所有字段并检查每个字段上的.isAccessible()。 关于如何迭代字段,我还有点困惑,还有如何在eash上检查.isAccessible()。

//THIS BIT DOESN'T WORK...
private doCheckMap(myMap){
    for (Id key : myMap.keySet()) {
        if(false == Schema.SObjectType.???.fields.isAccessible()) {
            System.debug('nope!');
        }     
    }
}

任何建议或意见将不胜感激。 欢呼声。

1 个答案:

答案 0 :(得分:2)

您可以像这样迭代你的地图:

Map<String, MyType> myMap = new HashMap<String, MyType>();
Iterator<Map.Entry<String, MyType>> iter = myMap.entrySet().iterator();
while(iter.hasNext()){
    MyType entry = iter.next().getValue();
    for (Field f : entry.getClass().getFields()) {
          if (f.isAccessible()) {
              //...
          }
    }
}

那么为什么你甚至需要一张地图?你不能只使用reflexion api getFields() - 就像这样:

for (Field f : Opportunity.getClass().getFields()) {
    if (f.isAccessible()) {
         //...
    }
}