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 和一个私有(private)内部类 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 对象时,(上图)(与我的 Person.java 文件位于同一文件夹中),我收到一个错误。
错误是这样的:“错误:没有找到适合 Person(String,Date) 的构造函数” (编译器引用我实例化 testPerson 所在的行作为错误的原因。)
问题:我做错了什么?另外,如何创建一个 Person 对象并将 Date 对象传递给 Person 的构造函数? (如果 Date 是 Person 的私有(private)内部类,这甚至可能吗?)
最佳答案
Date
是 Person
的私有(private)内部类,因此您无法从另一个(非 Person)类创建它的实例。两件事:
- 为了使您当前的设计正常工作,将
Date
的访问权限从私有(private)更改为公共(public) - 您还需要为
Person
类创建一个默认构造函数,因为您需要它的一个实例来创建内部类。 - 请考虑更改您的内部类名称。 SDK 中已有一个
Date
类。
老实说,您应该按照其他人的建议,将Date
创建为一个独立的类。
关于Java - 私有(private)内部类的对象作为外部类构造函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15753643/