Apex Set:如何在不知道数据类型的情况下迭代一个集合?

贾登特

Set 不能转换为像列表这样的 Set 对象。因此,如果您有一个可以接受任何对象的方法,例如:

public void handler(Object any_var_including_a_set)

有没有办法在不知道集合保存的数据类型的情况下动态迭代集合的内容?

罗杰·米切尔

Object.getClass()Apex 中没有 的概念另一种方法是使用instanceof一组已知的类型。

下面的修改handler使用JSON.serialize,然后确定ofAnyType是数组、对象还是其他一些原语。

假设一个数组(aSetList在 Apex 中),它可以转换为List<Object>. 这可以迭代以确定instanceof每个成员的 。

另一种实现将使用ofAnyType instanceof Set<Object_Type_Here>,但并不抽象。

public static void handler(Object ofAnyType)
{       
    String jsonString = JSON.serialize(ofAnyType);
    System.debug(jsonString);

    // if array, use List<Object>
    if(jsonString.length() > 0 && jsonString.startsWith('[') && jsonString.endsWith(']'))
    {
        List<Object> mapped = (List<Object>)JSON.deserializeUntyped(jsonString);

        // iterate over mapped, check type of each Object o within iteration
        for(Object o : mapped)
        {
            if(o instanceof String)
            {
                System.debug((String)o);
            }
        }
    }

    // if object, use Map<String, Object>
    else if(jsonString.length() > 0 && jsonString.startsWith('{') && jsonString.endsWith('}'))
    {
        Map<String, Object> mapped = (Map<String,Object>)JSON.deserializeUntyped(jsonString);

        // iterate over mapped, check type of each Object o within iteration
        for(Object o : mapped.values())
        {
            if(o instanceof String)
            {
                System.debug((String)o);
            }
        }
    }
}

为了快速测试,我保存handler在我的StackTesting班级中。您可以使用下面的代码来执行匿名 Apex 并查看结果。

Integer i = 42;
Set<String> strs = new Set<String>{'hello', 'world'};
Set<Object> objs = new Set<Object>{'hello', 2, new Account(Name = 'Sure')};

StackTesting.handler(i);
StackTesting.handler(strs);
StackTesting.handler(objs);

请注意,更强大的实现将Pattern在 Apex 内使用,这将代替.startsWith.endsWith用于确定jsonString是数组还是对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

该程序如何在不知道其数据类型的情况下接受数据?

来自分类Dev

给定一个对象,该对象是枚举值的数组,如何在不知道枚举类型的情况下获取Enum []

来自分类Dev

如何在不知道ID的情况下选择SQLIte DB的最后一个条目?

来自分类Dev

如何在不知道名称的情况下获取JSONObject中的第一个对象?

来自分类Dev

如何在不知道键的情况下访问哈希表的第一个值?

来自分类Dev

如何在不知道类的情况下从另一个 dll 调用类的函数?

来自分类Dev

是否可以从apex中的另一个应用程序获取apex集合

来自分类Dev

在oracle apex上通过SQL select语句运行。一个返回“ SQL命令未正确结束”的消息,我不知道为什么

来自分类Dev

不知道在这种情况下如何做一个 while 循环

来自分类Dev

如何在不知道特定孩子密钥的情况下统一从Firebase检索数据

来自分类Dev

在Apex页面中传递数据

来自分类Dev

如何从APEX 4.2.0升级到APEX 5.0.3?

来自分类Dev

如何安装Oracle Apex Listener?

来自分类Dev

Apex:如何找出架构名称?

来自分类Dev

没有APEX的情况下如何在oracle中更新json值?

来自分类Dev

如果一张地图只有一个成员,如果你不知道密钥,如何在不循环的情况下获得它?

来自分类Dev

如何在Oracle APEX中注销会话?

来自分类Dev

如何在Oracle Apex中删除页脚

来自分类Dev

如何在不知道键的情况下提取对象每个值的返回类型

来自分类Dev

如何在不知道类型的情况下从泛型函数调用函数?

来自分类Dev

如何在不知道具体类型的情况下引用变量?

来自分类Dev

如何在不知道其确切类型的情况下更新DbContext中的实体?

来自分类Dev

如何在不知道输入类型的情况下创建填充矩阵的方法

来自分类Dev

如何在不知道形式参数类型的情况下找到构造函数?

来自分类Dev

如何在不知道 C# 中的底层类型的情况下遍历数组

来自分类Dev

如何在不知道键的情况下从F#Map中获得第一个键,值对?

来自分类Dev

zsh完成:建议使用倍数目录,以及如何在不知道该目录内容的情况下选择一个目录

来自分类Dev

在python3中,如何在不知道函数名称的情况下从该函数的范围内引用一个函数?

来自分类常见问题

在不知道索引的情况下获取Series的第一个元素

Related 相关文章

  1. 1

    该程序如何在不知道其数据类型的情况下接受数据?

  2. 2

    给定一个对象,该对象是枚举值的数组,如何在不知道枚举类型的情况下获取Enum []

  3. 3

    如何在不知道ID的情况下选择SQLIte DB的最后一个条目?

  4. 4

    如何在不知道名称的情况下获取JSONObject中的第一个对象?

  5. 5

    如何在不知道键的情况下访问哈希表的第一个值?

  6. 6

    如何在不知道类的情况下从另一个 dll 调用类的函数?

  7. 7

    是否可以从apex中的另一个应用程序获取apex集合

  8. 8

    在oracle apex上通过SQL select语句运行。一个返回“ SQL命令未正确结束”的消息,我不知道为什么

  9. 9

    不知道在这种情况下如何做一个 while 循环

  10. 10

    如何在不知道特定孩子密钥的情况下统一从Firebase检索数据

  11. 11

    在Apex页面中传递数据

  12. 12

    如何从APEX 4.2.0升级到APEX 5.0.3?

  13. 13

    如何安装Oracle Apex Listener?

  14. 14

    Apex:如何找出架构名称?

  15. 15

    没有APEX的情况下如何在oracle中更新json值?

  16. 16

    如果一张地图只有一个成员,如果你不知道密钥,如何在不循环的情况下获得它?

  17. 17

    如何在Oracle APEX中注销会话?

  18. 18

    如何在Oracle Apex中删除页脚

  19. 19

    如何在不知道键的情况下提取对象每个值的返回类型

  20. 20

    如何在不知道类型的情况下从泛型函数调用函数?

  21. 21

    如何在不知道具体类型的情况下引用变量?

  22. 22

    如何在不知道其确切类型的情况下更新DbContext中的实体?

  23. 23

    如何在不知道输入类型的情况下创建填充矩阵的方法

  24. 24

    如何在不知道形式参数类型的情况下找到构造函数?

  25. 25

    如何在不知道 C# 中的底层类型的情况下遍历数组

  26. 26

    如何在不知道键的情况下从F#Map中获得第一个键,值对?

  27. 27

    zsh完成:建议使用倍数目录,以及如何在不知道该目录内容的情况下选择一个目录

  28. 28

    在python3中,如何在不知道函数名称的情况下从该函数的范围内引用一个函数?

  29. 29

    在不知道索引的情况下获取Series的第一个元素

热门标签

归档