Я пытаюсь создать экземпляр класса, который используется в конструкторе его внешнего класса. Ссылаясь на приведенный ниже код, мне нужен объект 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
курица и яйцо –
я не думаю, что это особенно хорошее расположение, если '' TimeOnlineInfo' и UserData' находятся в строгом соотношении 1 к 1 (так как они кажутся), почему у вас есть отдельный, общедоступный класс «TimeOnlineInfo»? Конечно, могут быть причины для этого, но из того, что вы опубликовали, самым простым решением было бы избавиться от 'TimeOnlineInfo' вообще. – biziclop