潜伏バグからのロングフリーズ

Javaっぽいエンジニアの徒然草

Java

直感的で一目で分かる日付の大小比較

これまでDate型の大小比較はDate#compareToを利用していました。 これです。 public int compareTo(Date anotherDate) 処理結果は、次のようになります。 引数 Date がこの Date と等しい場合は値 0。 この Date が引数 Date より前の場合は 0 より小さい値…

コンパイルエラー「\65279は不正な文字です。」

Eclipse上で問題なく動いていたJavaコードに対して、コマンドラインからビルドをかけたところ表題のエラーが発生した。 \65279 = UTF-8のBOM(Byte Order Mark) どうやらソースファイルの中に、エンコードUTF-8でBOMありのものが紛れ込んでいるらしい。 Windo…

リファクタリング未遂事件

※別に事件でもなんでもないのだけれど語呂が良いので。 こんなソースコードを見かけた。 変数a, b, c, d, hoge, fuga, hogehoge, fugafugaは全てString型。 1. if (null == hoge || null == fuga) { 2. if(a.equals(b) && c.equals(d)) { 3. // 処理A 4. } 5…

Long.parseLong(s)とLong.valueOf(s)の違い

タイトルはLongだけど、Integerなんかも同じ。 parseXxx()はプリミティブ型を返す。 次の場合はlongの10となる。 Long.parseLong("10"); valueOf()はラッパー型を返す 次の場合はLongの10となる。 Long.valueOf("10"); Longクラスの実装を見ていくと、parse…

Javaで定数定義したSQLを動的に変更する(=ただの置換) からの final修飾子のおさらい

JavaのStringでSQLを定義。 条件に応じて参照テーブルを変更する。 ex) xxFlagがONの時はTABLE_1, OFFの時はTABLE_2を参照したい。 それ以外の結合や絞込み条件などは全く一致する前提。 -----------------------------------------------------------------…