public class Person
{
private class Date
{
public Date(int month, int day, int year)
{
...
}
}
private String name;
private Date birthDate;
public Person(String name, Date birthDate)
{
...
}
}
上面,我有一个外部类,Person和一个私有内部类Date。 Person对象的构造函数应该将Date作为其参数之一。
public class Test
{
public static void main(String[] args)
{
Person testPerson = new Person("Mr. Sandman", new Date(1, 1, 1970));
}
}
但是当我尝试在单独的“测试”文件Test.java(上面)(与我的Person.java文件位于同一文件夹中)中创建一个Person对象时,我收到错误。
错误是这样的:“错误:没有为Person找到合适的构造函数(String,Date)” (编译器引用我实例化testPerson的行作为错误原因。)
问题:我做错了什么?另外,如何创建Person对象并将Date对象传递给Person的构造函数? (如果Date是Person的私有内部类,这甚至可能吗?)
答案 0 :(得分:4)
Date
是Person
的私有内部类,因此您无法从另一个(非Person)类创建它的实例。两件事:
Date
的访问权限从私人更改为公开Person
类创建一个默认构造函数,因为您需要一个实例来创建内部类。Date
个类。说实话,你应该像其他人所建议的那样,将你的Date
创建为一个独立的类。
答案 1 :(得分:0)
您可以添加一个新的Person
构造函数,它将java.util.Date
作为第二个参数,并从Person.Date
对象创建一个java.util.Date
对象(可能通过{{1}对象)。
你也可以让你现有的构造函数Calendar
,因为没有人能够使用它。