Я использую шаблон singleton для создания класса, однако он получает еще один синглтон в качестве параметра, он не работает, действительно ли это возможно?Singleton, идущий в бесконечный цикл
Это весь проект: https://github.com/raphaelbgr/SwingSocketClient/tree/master/src
package clientmain;
import gui.janelas.JanelaMain;
public class ClientMain {
public static int port = 0;
public static Thread receiver = null;
public static String ip = null;
public static String your_name = null;
public static void main(String[] args) {
JanelaMain jam = JanelaMain.getInstance(); //JanelaMain extends JFrame
jam.setLocationByPlatform(false);
}
Это это синглтон блок.
//SINGLETON PATTERN BLOCK
private static JanelaMain jam;
public static JanelaMain getInstance() {
if (JanelaMain.jam == null) {
jam = new JanelaMain(JanelaSelectServer.getInstance()); //Another one passed by parameter
}
return jam;
}
Другой класс Singleton блок:
//SINGLETON PATTERN BLOCK
private JanelaSelectServer() {} //JanelaSelectServer extends another JFrame
private static JanelaSelectServer jsv;
public static JanelaSelectServer getInstance() {
if (jsv == null) {
jsv = new JanelaSelectServer();
}
return jsv;
}
Дерьмо случается (A Loop)
s.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
Спасибо.
Вы имели смысл сделать 'if (JanelaMain.jam == null) {' equal to 'if (jam == null) {' –
Wow, Singleton в зависимости от другого Singleton? Возможно, вы изобрели новый анти-шаблон ... Я предлагаю назвать это * The Twingleton Pattern *, потому что близнецы также зависят друг от друга. – fredoverflow