[英]Java - object of a private inner class being as an argument to an outer class' constructor
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的私有内部类,这甚至可能吗?)
Date
是Person
的私有内部类,因此您无法从另一个(非Person)类创建它的实例。 两件事情:
Date
的访问权限从私有更改为公共 Person
类创建一个默认构造函数,因为您需要一个实例来创建内部类。 Date
类。 说实话,你应该像其他人所建议的那样,将你的Date
创建为一个独立的类。
您可以添加一个新的Person
构造函数,它将java.util.Date
作为它的第二个参数,并从java.util.Date
对象创建一个Person.Date
对象(可能通过Calendar
对象)。
您也可以将现有构造函数设为private
因为没有人能够使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.