2

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

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

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

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

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

4

2 回答 2

2

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

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

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

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

public class Foo extends Bar {
}

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

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

于 2012-08-22T07:45:00.333 回答
1

右键单击 myComputer 图标,在环境变量路径上设置您的 jdk bin 文件夹路径

然后重启电脑

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

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

}
);

避免这种类型的编写代码它会在项目 bin 文件夹中创建您的类文件

于 2012-09-01T14:14:54.427 回答