【问题标题】:Javacard CollectionsJavacard 集合
【发布时间】:2015-06-02 20:35:29
【问题描述】:

我一直在查看 JavaCard API 和示例,但找不到任何对更高级别数据集合(如 List、ArrayList、HashMaps 等)的引用?

我错过了什么吗?

我知道 JavaCard 环境的资源非常有限,JVM 必须尽可能小,但缺乏某种形式的易于使用的数据收集对象可能会使流程变得相当手动。

【问题讨论】:

    标签: smartcard javacard


    【解决方案1】:

    你说得对,JavaCard API 中没有 List、ArrayList 或 HashMap 这样的集合。数组就是你所拥有的——如果有必要,你可以实现自己的 ArrayList。毕竟也没有字符串。

    JavaCard 不是 Java,尽管名称可能会令人困惑。 JavaCard 中的编码是非常底层的。你应该把 JavaCard 当作 Java 语法的汇编器。

    【讨论】:

    • 这意味着如果我想操作数据对象列表,我必须以某种方式复制和移动 byte[] 对象。
    【解决方案2】:

    JCVM 中没有集合。在 javacard 中,只有字节/短数组供您使用;此外,也不支持二维(及以上)数组。

    您必须为复杂的数据存储设计和实现自己的数据结构。

    祝你好运。

    【讨论】:

      【解决方案3】:

      集合 / 哈希映射 / 字符串 / 多线程 / 2D 数组 / 垃圾收集 finalize() 受 Java Card 架构支持。在 java 卡中,只有 byte/short 类型的数组可供使用。支持的数据类型是 boolean / Byte / Short / Integer(某些平台支持)

      【讨论】:

        【解决方案4】:

        Javacard 是它仅支持的 Java 的一个很小的子集

        布尔,字节,短 Int 关键字是可选的 一维数组 Java 包 类和接口 异常 遗产 多态性

        重载

        不支持 Long、double、float 和所有包装类 字符、字符串 多维数组 动态类加载 安全管理 完成方法 线 序列化 克隆方法

        【讨论】:

          【解决方案5】:

          这取决于您使用的是哪个 java card api 版本, 直到 java card 2.2.2,更高级别的数据集合不可用,但是从 java card 3.0(经典或连接)开始,您可以使用大多数更高级别的数据集合。 你可以在here找到更多细节

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-02-19
            • 1970-01-01
            • 2015-12-26
            • 1970-01-01
            • 1970-01-01
            • 2018-05-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多