我希望检查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!');
}
}
}
任何建议或意见将不胜感激。 欢呼声。
答案 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()) {
//...
}
}