减少BlackBerry app生成的类文件数量

时间:2012-08-21 13:31:23

标签: blackberry java-me

我为BlackBerry开发了一个订单处理应用程序。当我查看bin文件夹时,我看到了超过100个.class个文件。

我创建了一个用于添加新客户端的主屏幕类。该屏幕有7个LabelField对象和7个相应的TextField对象。此屏幕还会创建一个VerticalFieldManager并将所有这些字段添加到它,然后将VerticalFieldManager添加到屏幕。

对于此屏幕,我在bin文件夹中有14个.class个文件。似乎编程中的每个字段都有一个类文件。 例如:

NewClient.class
NewClient$1.class
...
NewClient$14.class

如何设计UI以减少编译类的数量?

2 个答案:

答案 0 :(得分:2)

为BlackBerry构建Java-ME应用程序需要两个步骤。首先将java源代码编译为类文件,然后将这些类文件再次编译为.cod文件,该文件可以部署到模拟器或设备上。

'rapc'是RIM编译器,它接受java程序并将它们转换为cod或alx文件进行部署。 'rapc'可以使用java源代码或编译的java类。无论哪种方式,它都可以产生适合设备的输出。

从Java源文件开始,您可以将它们显式编译为类文件并将这些类文件传递给rapc,或者您可以将Java源代码传递给rapc,它将直接编译源代码。 rapc只是在提供java源代码时遵循JDK javac编译器。这意味着标准的Java JDK编译器总是被用作编译BlackBerry应用程序的第一步,我们可以查看标准的java行为来了解正在发生的事情。

在Java中,每个实例化的类只有一个.class文件。对于具有声明名称的普通类,如下所示:

public class Foo extends Bar {
}

.class文件分配一个与声明的类名匹配的名称。但是,Java也允许匿名类。它们采用new Foo()后跟大括号的形式,将其转换为匿名类。这提出了一个问题,因为必须在VM级别为此匿名类分配一个名称,尽管在Java源级别没有。解决方案是使用在Java源代码中无效但在VM中有效的字符,即$。匿名类的名称基于封闭的Java类,后跟$,然后是基于此前面的匿名类数量的整数索引。在您的情况下,即NewClient,后跟14个不同的整数。

要查看您描述的行为,您的字段必须实际上都是您提到的那些类的匿名实现。要减少类的数量,请尝试重用显式类,而不是为每个实例化编写自定义行为。

答案 1 :(得分:1)

右键单击myComputer图标

,在环境变量路径上设置jdk bin文件夹路径

然后重启电脑

其他方法是不要在代码上使用覆盖方法,例如

btmSave.setChangeListner(new FieldChangeListner()
{
   private void fieldChange()
   {
    }

}
);

避免这种类型的编写代码,它在项目bin文件夹

上创建了你的类文件