Re: Newbie: Properly using Calendar object types as instance variables
GG Kurt wrote:
1) Why does the following code produce these results;
Desc=One,startDate 08-08-31
Desc=Two,startDate 08-08-31
Instead of
Desc=One,startDate 01-01-01
Desc=Two,startDate 08-08-31
2) Should I be using the Date object even though most of the methods
appear to be deprecated?
You are using two references to the same calendar object. Just because
you can change its values doesn't turn it into multiple instances.
Use Calendar.getTime() to create two distinct Date instances.
import java.util.ArrayList;
import java.util.Calendar;
class DateIssue
{
public static void main(String[] args)
{
ArrayList<GenericNode> myList = new ArrayList<GenericNode>();
Calendar cStartDate = Calendar.getInstance();
cStartDate.set(2001, 0, 1);
myList.add(new GenericNode(cStartDate,"One"));
myList.add(new GenericNode(cStartDate.getTime(),"One"));
cStartDate.set(2008, 7, 31);
myList.add(new GenericNode(cStartDate,"Two"));
myList.add(new GenericNode(cStartDate.getTime(),"Two"));
for (GenericNode gn : myList)
{
System.out.println(String.format("Desc=%1$s,startDate=
%2$tF",
gn.getDesc(),gn.getStartDate()));
}
}
}
class GenericNode
{
Calendar StartDate; // = Calendar.getInstance();
Date startDate;
String Desc;
GenericNode(Calendar cStartDate, String sDesc)
GenricNode(Date cStartDate, String sDesc)
{
this.StartDate = cStartDate;
this.Desc = sDesc;
}
Calendar getStartDate()
Date getStartDate()
{
return StartDate;
}
String getDesc()
{
return Desc;
}
}
Then change all the variable names as appropriate!
(Untested, I hope I'm not writing rubbish :-)
--
RGB