2

私はBlackBerry用の注文処理アプリケーションを開発しました。binフォルダーを見ると、100を超える.classファイルがあります。

新しいクライアントを追加するためのメイン画面クラスを作成しました。画面には、7つのLabelFieldオブジェクトと7つの対応するTextFieldオブジェクトがあります。この画面では、VerticalFieldManagerも作成され、これらすべてのフィールドが追加されてから、VerticalFieldManagerが画面に追加されます。

この画面で.classは、binフォルダーに14個のファイルがあります。プログラムのフィールドごとに1つのクラスファイルがあるようです。例えば:

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

コンパイルされたクラスの数を減らすためにUIを設計するにはどうすればよいですか?

4

2 に答える 2

2

BlackBerry用のJava-MEアプリの構築は、2段階のプロセスです。最初にJavaソースコードがクラスファイルにコンパイルされ、次にそれらのクラスファイルが再び.codファイルにコンパイルされ、シミュレータまたはデバイスにデプロイできます。

'rapc'は、Javaプログラムを取得し、それらを展開用のcodまたはalxファイルに変換するRIMコンパイラーです。'rapc'は、Javaソースコードまたはコンパイル済みJavaクラスのいずれかを取ることができます。いずれにせよ、デバイスに適した出力を生成できます。

Javaソースファイルから始める場合は、それらを明示的にクラスファイルにコンパイルしてそれらのクラスファイルをrapc渡すか、Javaソースをrapcに渡すと、ソースが直接コンパイルされます。 rapcJavaソースコードが提示された場合は、JDKjavacコンパイラに依存します。つまり、BlackBerryアプリをコンパイルする最初のステップとして常に標準のJava JDKコンパイラーが使用され、標準のJavaの動作を調べて何が起こっているのかを理解できます。

Javaでは、インスタンス化されるすべてのクラスに1つの.classファイルがあります。次のように、宣言された名前を持つ通常のクラスの場合:

public class Foo extends Bar {
}

ファイルには、.class宣言されたクラス名と一致する名前が割り当てられます。ただし、Javaでは匿名クラスも許可されています。これらは、new Foo()これを匿名のクラスに変える中括弧が後に続く形を取ります。この匿名クラスには、Javaソースレベルには名前がないにもかかわらず、VMレベルで名前を割り当てる必要があるため、これには問題があります。解決策は、Javaソースでは無効であるが、VMでは有効な文字を使用することです$。匿名クラスには、囲んでいるJavaクラスに基づいた名前が割り当てられ$、その後に、このクラスの前にある匿名クラスの数に基づいた整数インデックスが続きます。あなたの場合、つまりNewClient、その後に14個の異なる整数が続きます。

説明する動作を確認するには、フィールドはすべて、実際には、言及するクラスの匿名の実装である必要があります。クラスの数を減らすには、インスタンス化ごとにカスタム動作を記述するのではなく、明示的なクラスを再利用してみてください。

于 2012-08-22T07:45:00.333 に答える
1

myComputerアイコンを右クリックして、jdkbinフォルダーのパスを環境変数パスに設定します

次に、PCを再起動します

他の方法は、次のようなコードで上書きメソッドを使用しないことです。

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

}
);

このタイプのコードを書くことは避けてください。プロジェクトのbinフォルダーにクラスファイルが作成されません。

于 2012-09-01T14:14:54.427 に答える