S-JIS[2005-02-11/2006-02-25]
iアプリはメモリや通信を使うところがシビアなので、いろいろな制限があるようです。
携帯のバージョンによって違うみたいだけど、505i(DoJa3.0)の場合、30kBまで。
携帯の機種によって画面サイズが違う〜面倒…。
特に縦の高さが違うようなので、気をつけないと他機種で表示しきれない、なんてことに。
メソッドの戻り型や引数にfloatやdoubleを指定すると、コンパイルは通るがクラスロード時の実行時エラーとなる。
ALERT: Bad method signature
浮動小数の定数を使うと、コンパイルは通るがクラスロード時の実行時エラーとなる。
private void test(int n){
System.out.println((int)(100f+n));
}
↓
ALERT: Invalid constant pool entry
素直にfloat系をコンパイルエラーにしてほしいところだけど、eclipseは普通のJavaコンパイラだから難しいんだろうなぁ。
ちなみに、下記のように演算がないものはエラーにならない。(コンパイル時点で変換されるせいか?)
private void test(int n){
System.out.println((int)100f);
}
文字列との結合は、DoJa3.0のツールでビルドするとコンパイルエラーになる。
C:\iDKDoJa3.0\apps\test\src\Test.java:19: シンボルを解釈処理できません。
javacの実行に失敗しました
シンボル: メソッド append (float)
位置 : java.lang.StringBuffer の クラス
System.out.println("Start IApplication"+(100f*test()));
^
致命的エラー: メソッド append を検出できません。
なぜStringBufferでappendかというと、文字列の結合は内部的にはStringBuffer#append()を使うから。
eclipseだとコンパイルエラーにならないが、実行時エラーになる。
開発環境にもよるんだろうけど、エミュレーターより実機の方が性能が悪い。だから、エミュレーターで動いても安心しちゃ駄目。