2017-08-01 13 views
-1

一度呼び出されて複数回使用されるメソッドを作成するプログラムを実行しようとしています。次の例を検討してくださいメソッドをアプリケーションライフタイム全体で1回だけ呼び出す

public class SampleClass { 

    public static void main(String[] args) { 
     System.out.println(A.useMethodA()); 
     System.out.println(A.againUseMethodA()); 
    } 
} 

class A { 

    public static String useMethodA() { 
     return new SimpleDateFormat("yyyy-MM-dd").format(methodA()); 
    } 

    public static String againUseMethodA() { 
     return new SimpleDateFormat("EEE yyyy-MMM-dd").format(methodA()); 
    } 

    public static Date methodA() { 
     return B.createDate(); 
    } 
} 

class B { 
    public static Date createDate() { 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Enter Year"); 
     int year = sc.nextInt(); 
     System.out.println("Enter month"); 
     int month = sc.nextInt(); 
     System.out.println("Enter day"); 
     int date = sc.nextInt(); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(year, month, date); 
     return calendar.getTime(); 

    } 
} 

ここで問題には、日付と時刻を設定する方法があります。そして、この日付メソッドを使用する他の多くのフォーマットがあるので、それは複数回呼び出されています。メソッドが呼び出されるときに毎回データを入力するようにconsole windowを繰り返すことは望ましくありませんが、1回だけ設定します。これを並べ替えるための回避策はありますか?

+0

これは、変数に日付を格納するという意味ですか? – John3136

+1

mainで 'createDate'を呼び出してみませんか?第2に、毎回日付をフォーマットする代わりに、フォーマットされた 'String'をキャッシュする必要があります。 –

+0

@ John3136、私はちょうど 'A.useMethodA()' B.createDate() 'が何度も呼び出されないようにしたいと思っています。 – user7036414

答えて

2

クラスAは静的な日付を格納し、格納された日付がnullの場合はB.createDate()のみを呼び出します。

class A { 

    private static Date theDate = null; 

    // unchanged 
    public static String useMethodA() { ... } 
    } 

    // unchanged 
    public static String againUseMethodA() {... } 

    public static Date methodA() { 
     if (theDate == null) 
     { 
      theDate = B.createDate(); 
     } 
     return theDate; 
    } 
} 
+0

それはうまくいきました。 – user7036414

関連する問題