我有这个java程序,其中创建了person类列表... dateofBirth是person's类中的对象参数。现在我面临一个问题;如何在列表中初始化person对象或如何将DateOfBirth对象传递给Person的构造函数?
class DateOfBirth{
private int year;
private int month;
private int day;
DateOfBirth(){
this.year = 0;
this.month = 0;
this.day = 0;
}
DateOfBirth(int y, int m, int d){
if(y>1900){
year = y;
}
else{
System.err.println("the year is too small too old" );
}
if(0<month && month<13){
month = m;
}
else{
System.err.println("month should be within 1 to 12.");
}
if(0<day && day<30){
day = d;
}
}
public int getYear() {
return year;
}
public int getMonth(){
return month;
}
public int getDay(){
return day;
}
}
class Person{
private String name;
private int age;
private DateOfBirth Dob;
public Person(String name, int age, DateOfBirth dob){
this.name = name;
this.age = age;
this.Dob = dob;
}
public String getName() {
return name;
}
public DateOfBirth getDob() {
return Dob;
}
public int getAge() {
return age;
}
}
public class MyList {
ArrayList<Person> Personlist = new ArrayList<Person>();
Person person=new Person("John",23,...) // how to pass the DateOfBirth object here?
}
答案 0 :(得分:5)
先制作日期,然后将其作为参数传递
public class MyList {
ArrayList<Person> Personlist = new ArrayList<Person>();
DateOfBirth date = new DateOfBirth(2000, 1, 1);
Person person = new Person("John", 16, date);
}
希望这会有所帮助。
答案 1 :(得分:2)
在你需要的地方创建DateOfBirth的对象,然后简单地将它传递给像这样的构造函数
public class MyList {
ArrayList<Person> Personlist = new ArrayList<Person>();
DateOfBirth dob= new DateOfBirth(1992, 2, 3);
Person person=new Person("John",23,dob);
}
答案 2 :(得分:2)
作为@TeunVanDerWijst答案的补充,您还可以在类Person
中创建另一个构造函数,该构造函数将在Person
类本身中创建实例。构造函数可能如下所示。
public Person(String name, int age, int y, int m, int d) {
this(name, age, new DateOfBirth(y, m, d));
}
this
只会调用另一个构造函数,然后该构造函数将分配新生成的DateOfBirth
实例。
现在,您只需将年份,月份和日期作为Person
传递即可创建int
的实例。
Person person=new Person("John", 23, 2000, 9, 12);
答案 3 :(得分:0)
如果dateofbirth属于人,则不需要创建新的DateOfBirth对象
做到这一点很简单:
Person person = new Person("John",23,new DateOfBirth(1985,5,5));
甚至喜欢:
try
{
Personlist.Add(new Person("John",23,new DateOfBirth(1985,5,5)));
}
catch(Exception ex)
{
//
}
建议永远不要使用像MyList这样的类名。 列表是集合,MyList是???新的收藏类型?它有什么? 尝试制作名称,即使有人不知道程序在做什么也能理解目的。