Javaでは、コンパイル時のコンパイルを強制する一般的な方法はありますか?プログラミング競争では、プログラムの実行中に私たちのロボットが毎回使うことができるバイトコードによって制限されているので、コンパイル時に物事を計算することができれば利点があります。java強制コンパイル時の評価
具体的な例として、北に向いている場合にロボットが見ることができる正方形を表す の配列になる変数NORTHを定義したいとしましょう。私はこれを、コードを渡した場合、 は私が書くことができます:
public class SightSensor{
public static MapLocation[] NORTH = {new MapLocation(-2,2),
new MapLocation(-1,1),
new MapLocation(-1,2),
new MapLocation(0,1),
new MapLocation(0,2),
new MapLocation(0,3),
new MapLocation(1,1),
new MapLocation(1,2),
new MapLocation(2,2)};
}
ロボットは今9の平方距離内の真北、約90度の円弧ですべての正方形を見ることができることを表して、私のロボットはすべての基本的な方向で見ることができ、いくつかは他のものよりもさらに を見ることができます。それはむしろ退屈で、一見悪い形でそれぞれコードを手渡すことになります 視力(距離、方向)のペア。したがって、私は機能自動的に場所を計算
public static MapLocation[] getSensorLocs(int r, Direction dir){ ... bla ... }
を書いたので、ロボットによってNORTH変数を使用しようとするとき、私は唯一の問題は今
public class SightSensor{
public static MapLocation[] NORTH = getSensorLocs(3, Direction.NORTH);
}
としてSightSensorクラスを再書き込みすることができますgetSensorLocsメソッドを実行するのに、 の時間を費やさなければならないため、手書きのバージョンよりも高価です。 コンパイル時に強制的に計算を実行できますか?つまり、適切な意味で「記号的に置き換えられますか?
私はあなたがコンパイル時のプリプロセッサを探していると思いますが、これはCと同じですか? – Mitch
はい、それは私が望んでいたものです。 – andyInCambridge