gpt4 book ai didi

java - 创建在其外部类的构造函数中使用的类的实例

转载 作者:行者123 更新时间:2023-12-01 22:14:58 25 4
gpt4 key购买 nike

我正在尝试创建一个在其外部类的构造函数中使用的类的实例。引用下面的代码,我需要一个UserData对象,但我还需要一个 TimeOnlineInfo对象来创建它,但我看不到获得 TimeOnlineInfo 的方法对象,而不首先具有 UserData 的实例因为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

最佳答案

您对一些事情普遍感到困惑。让我们从头开始。

首先,这不是构造函数。

public void UserData(TimeOnlineInfo timeOnlineInfo){
this.timeOnlineInfo = timeOnlineInfo;
}

您的意思是删除 void 声明。

public UserData(TimeOnlineInfo timeOnlineInfo){
this.timeOnlineInfo = timeOnlineInfo;
}

其次,用内部类的实例实例化外部类没有结构意义,因为获取内部类实例的唯一方法是使用外部类首先。

例如,您必须使用 new UserData().new TimeOnlineInfo(int) 作为 TimeOnlineInfo 的实例,但这仅是:

  • 如果您选择为 UserData 创建无参数构造函数
  • 如果您真的不关心您要返回的 UserData 实例

如果您确实想要保留此设计,请考虑将 int 传递给您的构造函数,以便可以将其提供给 TimeOnlineInfo 的实例。

class UserData {
TimeOnlineInfo timeOnlineInfo;

public void saveData() {
// stub
}

public UserData(int value) {
this.timeOnlineInfo = new TimeOnlineInfo(value);
}


public class TimeOnlineInfo {
private int time;

public TimeOnlineInfo(int time){
this.time = time;
}

public void addTime(int time){
this.time += time;
UserData.this.saveData();
}
}
}

关于java - 创建在其外部类的构造函数中使用的类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31250246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com