【发布时间】:2015-07-06 15:52:06
【问题描述】:
我正在尝试创建一个在其外部类的构造函数中使用的类的实例。参考下面的代码,我需要一个UserData 对象,但我还需要一个TimeOnlineInfo 对象来创建它,而且我看不到在没有首先拥有UserData 实例的情况下获取TimeOnlineInfo 对象的方法,因为TimeOnlineInfo 不是静态的。我不能让它成为静态的,因为它需要从它的外部类访问一个方法。无论如何我可以让它工作或获得最相似的效果吗?我确实意识到我可以将类设为静态而不直接在 addTime 方法中保存数据,但我已经完成了这个问题的一半,我很想知道是否有办法做到这一点。
这是我的代码的一个非常简化的版本:
class UserData {
TimeOnlineInfo timeOnline;
public UserData(Object data1, Object data2, Object data3, Object data4, Object data5, TimeOnlineInfo timeOnlineInfo){
this.timeOnlineInfo = timeOnlineInfo;
}
public class TimeOnlineInfo {
private int time;
public TimeOnlineInfo(int time){
this.time = time;
}
public void addTime(int time){
this.time += time;
UserData.this.saveData();
}
}
}
UserData userData = new UserData(new UserData.TimeOnlineInfo());//Doesn't work because PlayInfo is not a static class
UserData userData = new UserData(userData.new TimeOnlineInfo());//This is just a stupid because i'm using the uncreated object in its own constructor
【问题讨论】:
-
我不认为这是一个特别好的安排,如果
TimeOnlineInfo和UserData是严格的一对一关系(看起来是这样),为什么要单独,首先公开可见的TimeOnlineInfo类?当然,这可能是有原因的,但根据您发布的内容,最简单的解决方案是完全摆脱TimeOnlineInfo。
标签: java constructor inner-classes nested-class outer-classes