2016-05-03 11 views
1

"Person"クラス内に誕生日を格納する必要があります。 java.util.Calendarを使用して日付が格納されている場合、「Person」オブジェクトを使用して日付にアクセスするにはどうすればよいですか?java.util.Calendarを使用してオブジェクトに格納された日付を格納および取得する

getメソッドを作成しようとしましたが、java.util.Calendarが静的であることに気づきました。私は生年月日ラッパークラスを作成しようとしましたが、もう一度オブジェクトを返すのに苦労しました。

public class Person { 
private String firstname; 
private String surname; 

public Person(String firstname, String surname, BirthdateWrapper birth) { 
    this.firstname = firstname; 
    this.surname = surname; 
    BirthdateWrapper birthday = birth; 
} 

public String getFirst(){ 
    return firstname; 
} 

public String getSurt(){ 
    return surname; 
} 

public BirthdateWrapper returnBirthObj() { 
    return birthday; 
} 

} 


import java.util.Calendar; 

public class BirthdateWrapper { 
private int day; 
private int month; 
private int year; 

Calendar birthday = Calendar.getInstance(); 

public BirthdateWrapper(int day, int month, int year) { 
    this.day = day; 
    this.month = month; 
    this.year = year; 
    setBirth(); 
    } 

private void setBirth() { 
    birthday.set(year, month, day); 
} 

} 
+0

Java 8を使用している場合は、古い 'java.util.Calendar'と' java.util.Date'を忘れて、 'java.time'パッケージの新しい日付クラスと時間クラスを使用してください代わりに。 – Jesper

答えて

0

あなたがこの抽象クラスは、Calendarインスタンスからjava.util.Dateを取得するための機能を提供しClass Calendar

を見てする必要があります。ここでは

は、私がこれまで持っているものの一部です。例えば、

日付が思うjava.util.Calendarの

を使用して保存され、これは定義 でされている場合、私は「人」オブジェクトを使用して、日付にアクセスするにはどうすればよい

calendar.getTime();

あなたのPerson

public class Person { 
    private String name; 
    ... 
    public static Calendar birthDate; // since you specified it's static 
    ... 
    // accessors/mutators 
} 

Person.birthDate.getTime();が表示されます。しかし、Calendarから実際の利益を得るためには、実際に理解しておくべき方法があるので、Calendarのクラスを読むことをお勧めします。set()get()add()roll()の方法についての詳細があります。

私は質問をはっきりと理解し、それに応じて答えました。私が誤解した場合のコメント。

+0

テストクラスでCalendarをインスタンス化し、それをPersonに渡すように指示されました。これはどうすればできますか? –

+0

@MartinRandとCalendarオブジェクトはPersonクラスのpublic staticですか? –

+0

カレンダーのようにインスタンス化することができます。 'Calendar.getInstance();'現在の日付と時刻の設定を持つカレンダーインスタンスを返します。 –

1

GregorianCalendarを使用している場合は、コンストラクタを使用できます。そうしないと、カレンダーのインスタンスを作成し、手動で各フィールドを設定する必要があります:

public void testX() { 
    ... 
    // Using GregorianCalendar 
    Calendar bday1 = new GregorianCalendar(2016, 0, 1); 
    person.setBirthdate(bday1); 

    // Using Calendar 
    Calendar bday2 = Calendar.getInstance(); 
    bday2.set(Calendar.YEAR, 2016); 
    bday2.set(Calendar.MONTH, 0); 
    bday2.set(Calendar.DAY_OF_MONTH, 1)); 
    person.setBirthdate(bday2); 
    ... 
} 

は、あなたが使用することができ、他のコンストラクタのためのGregorianCalendarを参照してください。独自のMyCalendarクラスを作成して独自のコンストラクタを作成することもできます。

+0

よく見えます。 Personにbday1を保存するにはどうしたらいいですか?そして、私はどのようにしてgetメソッドでオブジェクトを返すことができますか? –

+1

Personクラスに 'private Calendar birthdate'を追加し、getterとsetterを追加してそのフィールドを設定/返すようにしました。 Eclipseを使用している場合は、クラスを右クリックし、そのフィールドを追加した後に 'Source'>' Generate getters and setters ... 'を選択できます。 – dpfrakes

+0

私のコンストラクタのPersonにbday1を渡して、それをプライベートカレンダーのbirthdate に割り当てることはできますか? –

関連する問題