- - PR -
javaプログラムの長さに制限はあるか
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-12-17 20:58
ゴールデンさんのプロファイルから辿って、過去のご投稿に書かれているソースコードをいくつか拝見させていただきましたが、コードが長いと、人間も機械も動作が不安定になると思います。たぶん、機械側の問題である可能性は低いと思いますが、いずれにしてもコードを短くされることをされたほうが良いと思います。 「短く」と言っても、単にメソッドを等分割して個々のメソッドを小さくするのでは恐らくダメです。 なお、Graphics 関係の全般に言えることですが、とにかく表示が更新されないということを泥縄式に解決するのならば、至るところに repaint や revalidate(Swing の場合。AWT だけなら invalidate や validate の組み合わせ)を散りばめると良いこともあります。根本的な解決ではないですが。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||
|
投稿日時: 2006-12-17 22:27
皆さん、ありがとうございます。
コンパイラは、j2se1.4_02です。実行環境は最新の物です。 unibonさんには、プログラムの傾向まで見ていただいてありがとうございます。 まずは、実行プログラムを短くしてみます。 | ||||||||
|
投稿日時: 2006-12-18 00:42
インギさんが少し書いてましたが・・・。
一応、classファイルに制限はあります。 定数の数:2バイト 実装しているインターフェースの数:2バイト フィールドの数:2バイト メソッドの数:2バイト ・・・などです。つまり、それぞれ65535個までです。 また、Javaコードでジャンプするときに指定できるのは、符号付2バイトの相対アドレスです。 なので32KBを超えるジャンプはできません。例えば、if文やfor文の中身のコードが32KBを超えるものは作れません。 フツーのプログラムならこの制限に引っかかることはないのです。 今回のclassファイルのサイズってどのぐらいの大きさなのでしょう? | ||||||||
|
投稿日時: 2006-12-18 02:07
javapコマンドを使って、コンパイルされたクラスを確認してみては?
これで全部のメソッドが表示されるなら、コンパイルには問題ないと思います。 | ||||||||
|
投稿日時: 2006-12-28 21:49
実行されるようにはなりました。
しかし、完全解決ではありません。 Imageを引数で扱うことに何か制限があるかもと思い、引数からとって別の方法で引き渡したらできました。 そう言えば以前にもImageを扱う時にdrawImageを別クラスからは送ることができなかったことがありました。 drawはImageでなければ普通にできたのですが…。 など、もしかしたら、Imageの変数に関しては普通の変数とは違い、何らかの制限があるような気がします。(何かは分かりませんが) 実行されましたが、分からなかったことが分かるようになったわけではないのでスッキリ解決ではないですが、アドバイスしてくださった方々、いろいろな知識を教えてくださって本当にありがとうございました。 |