【发布时间】:2013-06-10 06:16:17
【问题描述】:
我有 2 个类:日期和人
Person 有两个 Date 类的属性
案例一
Date 类是与 Person 类分开的类。我让这段代码正常工作:
private String name;
private Date born;
private Date died; // null indicates still alive.
public Person(String initialName, int birthMonth, int birthDay,
int birthYear) {
// requirement from the instructor:
// **implement using the this() constructor**
this(initialName, new Date(birthMonth, birthDay, birthYear), null);
}
案例 2:内部类(作业要求)
我把Date作为Person的私有内部类
现在上面的构造函数代码不再工作了。 这是错误消息:
描述资源路径位置类型 由于某些中间构造函数调用 Person.java /Wk03_Ch10_FileIO_Ch13_Interfaces/wk03_Ch10_FileIO_Ch13_Inner_Classes 第 43 行 Java 问题,没有可用的 Person 类型的封闭实例`
我该如何解决这个问题?我可以这样做:
Date dt = new Date(birthMonth, birthDay, birthYear);
很遗憾,this() 必须是构造函数的第一行
另一种解决方法是
public Person(String initialName, int birthMonth, int birthDay,
int birthYear) {
// implement using the this() constructor
this.name = initialName;
this.born = new Date(birthMonth, birthDay, birthYear);
this.died = null;
}
但是最后一段代码不满足我的讲师要求在构造函数中使用this() 方法。
【问题讨论】:
-
没有。我应该使用私有内部类(我认为)
-
@BevynQ 我尝试将 Date 设为私有静态内部类,并且我的原始代码有效。所以我会问教练是否可以接受。同时,还有什么办法吗?谢谢
-
您的教师需要清楚术语。来自Official Java Tutorial:嵌套类分为两类:静态和非静态。声明为静态的嵌套类简称为静态嵌套类。非静态嵌套类称为内部类。一般来说,嵌套的静态类不是内部类。
标签: java constructor this inner-classes