我为BlackBerry开发了一个订单处理应用程序。当我查看bin文件夹时,我看到了超过100个.class
个文件。
我创建了一个用于添加新客户端的主屏幕类。该屏幕有7个LabelField对象和7个相应的TextField对象。此屏幕还会创建一个VerticalFieldManager并将所有这些字段添加到它,然后将VerticalFieldManager添加到屏幕。
对于此屏幕,我在bin文件夹中有14个.class
个文件。似乎编程中的每个字段都有一个类文件。
例如:
NewClient.class
NewClient$1.class
...
NewClient$14.class
如何设计UI以减少编译类的数量?
答案 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文件夹
上创建了你的类文件