繁体   English   中英

Java - 私有内部类的对象,作为外部类构造函数的参数

[英]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的私有内部类,这甚至可能吗?)

DatePerson的私有内部类,因此您无法从另一个(非Person)类创建它的实例。 两件事情:

  • 为了使您当前的设计有效,请将Date的访问权限从私有更改为公共
  • 您还需要为Person类创建一个默认构造函数,因为您需要一个实例来创建内部类。
  • 请考虑更改内部类名称。 SDK中已有Date类。

说实话,你应该像其他人所建议的那样,将你的Date创建为一个独立的类。

您可以添加一个新的Person构造函数,它将java.util.Date作为它的第二个参数,并从java.util.Date对象创建一个Person.Date对象(可能通过Calendar对象)。

您也可以将现有构造函数设为private因为没有人能够使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM