シリアルナンバー的な何かを返す静的クラスを作ってみた
import java.util.Calendar; public class Selial { private static int num; private static String day = ""; private Selial() {} synchronized private static String getDay() { Calendar d = Calendar.getInstance(); StringBuilder sb = new StringBuilder(8); sb.append(d.get(Calendar.YEAR)); sb.append(String.format("%02d",d.get(Calendar.MONTH)+1)); sb.append(String.format("%02d",d.get(Calendar.DATE))); return sb.toString(); } synchronized public static String getNum() { StringBuilder sb = new StringBuilder(13); String tmp_day = getDay(); if (!day.equals(tmp_day)) { day = tmp_day; num = 0; } sb.append(day); sb.append(String.format("%05d",num++)); return sb.toString(); } }
実行してみる。
public class Main { public static void main(String[] args) { System.out.println(Selial.getNum()); System.out.println(Selial.getNum()); System.out.println(Selial.getNum()); } }
実行結果
$ java Main 2009032600000 2009032600001 2009032600002
マルチスレッド対応。
なんかぁ、無駄がありそうで怖いけど、晒してみる。