バッチ処理させるプログラムで、以下のようなコードを見つけました。
class EvilBatch{ EvilBatch(){ System.out.println("start batch"); /* 以下、複雑な処理のつもり */ try{ Thread.sleep(3000); }catch(InterruptedException e){ e.printStackTrace(); } System.out.println("end batch"); } static public void main(String[] args){ new EvilBatch(); } }
コンストラクタでバッチ処理をするので、3秒間処理が戻って来ません。main()ではこのバッチを呼ぶためにインスタンスを生成しているが、参照する必要はないのでそのまま捨てています。正直、これを書いたやつは変態かと(´‐` ○)。
で、悔しかったのでこれを上回る変態のバッチを用意しました(ぇ。
class DevilBatch{ static{ System.out.println("start batch"); /* 以下、複雑な処理のつもり */ try{ Thread.sleep(3000); }catch(InterruptedException e){ e.printStackTrace(); } System.out.println("end batch"); } }
これだとmain()が必要ありません。「java.lang.NoSuchMethodError: main」って言われるけど知ったこっちゃありません。どうせ変態になるなら、これくらいやってもらわないと(笑)。
ちなみに、この実装だと先の実装と違って誤って二回newされても処理は一回しか走らないのがすばらし・・・くないですね。こんな実装断固反対( ´ω`X( ´ω`X<ダメダーメ