我对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对象上每个字段的描述信息,但有人可以逐行解释它是如何做到的吗?
干杯!
答案 0 :(得分:2)
这与您需要枚举地图时的基本情况相同:
m
m
的键,使用name
变量作为此迭代中键的值m
获取地图name
中的项目,并调用getDescribe
System.debug
但是,这不是迭代值的最佳方法:更简单的方法如下:
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
时检索值效率低下。