クラス内変数について:
以下の条件を満たすプログラムについて、
作成例を示してください。
インスタンス生成時点の現在時刻を表示する機能をもつ
シングルトランスを作成する。
2度目以降は、インスタンスを取得しても、
毎回インスタンス初回生成時点の時刻が出力される必要がある。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
シングルトランス・・・?
シングルトンのことですかね??
Java
1import java.text.SimpleDateFormat; 2import java.util.Date; 3 4public class MakeInstanceTest { 5 public static void main(String[] args){ 6 if(args.length == 0){ 7 System.out.println("引数にループ回数を指定してください。"); 8 } else { 9 for(int i = 0; i < Integer.parseInt(args[0]); i++){ 10 System.out.println(i+1+"回目呼び出し"); 11 MakeInstance mi = MakeInstance.getInstance(); 12 } 13 } 14 } 15} 16 17class MakeInstance{ 18 private Date madeTime = null; 19 private String formatMadeTime = null; 20 private static MakeInstance mInstance = null; 21 22 private MakeInstance(){}; 23 24 public static MakeInstance getInstance(){ 25 if(mInstance == null){ 26 mInstance = new MakeInstance(); 27 mInstance.madeTime = new Date(); 28 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 29 mInstance.formatMadeTime = sdf.format(mInstance.madeTime); 30 } 31 System.out.println(mInstance.formatMadeTime); 32 return mInstance; 33 } 34}
こんな感じでいかがでしょう。
シングルトンとは何ぞや?という場合は↓コチラ↓を読まれるといいと思います。
・クラスのインスタンスを1つに保つ(Singletonパターン)
・サルでもわかる逆引きデザインパターン>>Singleton(シングルトン)
投稿2015/11/04 08:05
編集2015/11/05 01:23総合スコア1844
0
ベストアンサー
現在時刻ということですが、HH:mm:ss形式でよろしいでしょうか。
Java
1import java.util.Date; 2import java.text.SimpleDateFormat; 3 4class Test{ 5 6 public static void main(String[] args){ 7 for(int i = 1; i <= 10; i++){ 8 try{ 9 Thread.sleep(500);// インスタンス生成のタイミングをずらす 10 } catch(InterruptedException e){ 11 //エラーは無視 12 } 13 System.out.println(i + "回目のインスタンス生成"); 14 Test2 tes = new Test2(); 15 tes.disp(); 16 } 17 } 18} 19class Test2{ 20 private static Date INSTANCE_DATE = null; 21 public Test2(){ 22 if(INSTANCE_DATE == null){ 23 // static変数がnull(初回)であれば現在日時を保持 24 INSTANCE_DATE = new Date(); 25 } 26 } 27 public void disp(){ 28 SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm:ss"); 29 String resStr = getClass().getName() + "のインスタンス生成時刻 "; 30 System.out.println(resStr + sdf1.format(INSTANCE_DATE)); //出力 31 } 32} 33
追記
少しソースを変えました。
元々mainを入れてなかったのは要件がわからないからです。
(何回インスタンス生成するか?等)
今回は適当に動くものを置いておきましたが、
次回からはもう少し詳しく書いたほうがいいです。
あと、コメントにあった「プログラム最初にクラス名を入れたいです」の意味が分かりませんでした。
プログラムはソースコードの意味ですか?
そうであれば自分でコメントを入れてください。
プログラムは出力結果の意味ですか?
そうであればこのソースで満足でしょうか。
投稿2015/11/04 06:34
編集2015/11/05 00:19総合スコア1507
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。