首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将ASN1包从标准Java (JRE 1.5+)迁移到J2ME (CLDC1.1)

将ASN1包从标准Java (JRE 1.5+)迁移到J2ME (CLDC1.1)
EN

Stack Overflow用户
提问于 2017-01-31 10:32:51
回答 1查看 97关注 0票数 1

我是Java的新手,我试图调整JASN1 OpenMUC编译器(用于java 1.5+)生成的输出类,以便在BGS5 CLDC1.1平台上运行它。大多数基本类已被成功地修改和编译,但在使用参数化列表或集合类方面仍然存在问题。它在一个基类上使用,在大多数产生的类中使用严重。而且CLDC1.1设备的java库也不支持它。

我的问题有两个分支:

  1. 有任何方法来完成从标准java到J2ME的源代码转换吗?
  2. 如何将源代码中的参数化列表替换为一个基本支持的类,如Vector。

包含参数化列表成员的目标类的示例是:

代码语言:javascript
运行
复制
//This class file was automatically generated by jASN1 v1.6.0 (http://www.openmuc.org)

package MyPackage;

import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
// those packages are not available

public class DeviceInputOutputStatus {

    public List<IOStatus> seqOf = null;
    //IOStatus is a class of the package

    public DeviceInputOutputStatus () {
        seqOf = new ArrayList<IOStatus>();
    }  

    public int encode(BerByteArrayOutputStream os) throws IOException 
    {
        int codeLength = 0;
        for (int i = (seqOf.size() - 1); i >= 0; i--) {
                codeLength += seqOf.get(i).encode(os, true);
                //encode is a method of IOStatus
            }
        return codeLength;
    }

}
EN

回答 1

Stack Overflow用户

发布于 2017-01-31 18:32:05

您必须修改所有生成的代码,以避免使用泛型。更重要的是,不要使用任何集合类,因为在JavaME CLDC1.1中不支持它们。

你可以把这看作一个两步的过程。首先,消除泛型的使用。为了消除泛型,您只需使用普通列表(后面没有尖括号),然后在需要的地方添加强制转换(从Object到IOStatus或其他什么)(例如,每当您从列表中获取对象时)。

第二步:用向量替换列表。您必须比较这两个类的文档并相应地调整代码。

提示(您可能已经知道这一点):使用javac的-bootclasspath选项将编译器指向CLDC1.1类库,以确保不使用不受支持的API,使用-source 1.3和-target 1.3确保源代码兼容,并生成兼容的字节代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41955303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档