不确定这段代码是如何做的...... .getDescribe()

时间:2014-06-16 12:28:58

标签: java salesforce apex

我对Apex和Java相对较新。

有人可能会解释这段代码吗?

Map<String, SObjectField> m = Opportunity.SObjectType.getDescribe().fields.getMap();
for (String name : m.keySet()) {
    DescribeFieldResult r = m.get(name).getDescribe();
    System.debug(r);
}

我知道它正在获取Opportunity对象上每个字段的描述信息,但有人可以逐行解释它是如何做到的吗?

干杯!

1 个答案:

答案 0 :(得分:2)

这与您需要枚举地图时的基本情况相同:

  • 第1行获取地图,并将其存储在变量m
  • 第2行迭代地图m的键,使用name变量作为此迭代中键的值
  • 第3行使用m获取地图name中的项目,并调用getDescribe
  • 第4行将结果传递给System.debug
  • 第5行关闭循环

但是,这不是迭代值的最佳方法:更简单的方法如下:

Map<String, SObjectField> m = Opportunity.SObjectType.getDescribe().fields.getMap();
for (SObjectField val : m.values()) {
    System.debug(val.getDescribe());
}

为了完整性,如果您想迭代键和值,请迭代entrySet,如下所示:

Map<String, SObjectField> m = Opportunity.SObjectType.getDescribe().fields.getMap();
for (Map.Entry<String,SObjectField> e : m.entrySet()) {
    // e.getKey() produces the key
    // e.getValue() produces its associated value
}

迭代密钥然后在单独调用get时检索值效率低下。

相关问题