ik heb een singleton klasse gemaakt (het voorbeeld heb ik van Wikipedia):
de eerste aanroep van get() in main() gaat goed, en het programma start normaal. als ik dan later in een andere klass MainApp.get().methode() aanroep, krijg ik een de volgende error voor mn kiezen:
wat kan ik aan dit supersimpele principe nou fout hebben gedaan dat het niet werkt?
bij voorbaat dank
edit: ik heb eerst ook nog dit geprobeerd, maar kreeg toen ook een nullpointerfout
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| public class MainApp { public MainWindow mainWindow; public ControlStreamReader socketReader; /** * Start de applicatie * @param args De commandline argumenten. Voor deze applicatie niet van toepassing */ public static void main(String[] args) { MainApp.get(); } /** * Verkrijg de hoofdklasse van de applicatie * Hij wordt gemaakt als hij nog niet bestaat */ public static MainApp get() { return SingletonHolder.instance; } private static class SingletonHolder { private static MainApp instance = new MainApp(); } // private constructor volgens het Singleton principe private MainApp() { mainWindow = new MainWindow(); } } |
de eerste aanroep van get() in main() gaat goed, en het programma start normaal. als ik dan later in een andere klass MainApp.get().methode() aanroep, krijg ik een de volgende error voor mn kiezen:
regel 129 van MainWindow.java bevat dus "MainApp.get().methode();"Exception in thread "main" java.lang.ExceptionInInitializerError
at ica.elo.MainApp.get(MainApp.java:31)
at ica.elo.MainApp.main(MainApp.java:23)
Caused by: java.lang.NullPointerException
at ica.elo.MainWindow.showConnectDialog(MainWindow.java:129)
at ica.elo.MainWindow.access$0(MainWindow.java:124)
at ica.elo.MainWindow$1.widgetSelected(MainWindow.java:65)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3673)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)
at ica.elo.MainWindow.<init>(MainWindow.java:39)
at ica.elo.MainApp.<init>(MainApp.java:39)
at ica.elo.MainApp.<init>(MainApp.java:38)
at ica.elo.MainApp$SingletonHolder.<clinit>(MainApp.java:34)
... 2 more
wat kan ik aan dit supersimpele principe nou fout hebben gedaan dat het niet werkt?
bij voorbaat dank
edit: ik heb eerst ook nog dit geprobeerd, maar kreeg toen ook een nullpointerfout
Java:
1
2
3
4
5
6
7
8
9
10
11
12
| public class MainApp { private static MainApp instance = null; public static MainApp get() { if(instance == null) instance = new MainApp(); return instance; } // ... constructor en de rest } |
[ Voor 6% gewijzigd door 2playgames op 09-05-2007 18:51 ]