10000 Merge pull request #609 from igorcadelima/master · larryjiang/java-design-patterns@f9f9369 · GitHub
[go: up one dir, main page]

Skip to content

Commit f9f9369

Browse files
authored
Merge pull request iluwatar#609 from igorcadelima/master
Protect against instantiation via reflection
2 parents a367832 + 3c6f7aa commit f9f9369

File tree

1 file changed

+16
-19
lines changed

1 file changed

+16
-19
lines changed

singleton/src/main/java/com/iluwatar/singleton/ThreadSafeLazyLoadedIvoryTower.java

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,20 @@
11
/**
2-
* The MIT License
3-
* Copyright (c) 2014-2016 Ilkka Seppälä
2+
* The MIT License Copyright (c) 2014-2016 Ilkka Seppälä
43
*
5-
* Permission is hereby granted, free of charge, to any person obtaining a copy
6-
* of this software and associated documentation files (the "Software"), to deal
7-
* in the Software without restriction, including without limitation the rights
8-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9-
* copies of the Software, and to permit persons to whom the Software is
4+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
5+
* associated documentation files (the "Software"), to deal in the Software without restriction,
6+
* including without limitation the rights to use, copy, modify, merge, publish, distribute,
7+
* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
108
* furnished to do so, subject to the following conditions:
119
*
12-
* The above copyright notice and this permission notice shall be included in
13-
* all copies or substantial portions of the Software.
10+
* The above copyright notice and this permission notice shall be included in all copies or
11+
* substantial portions of the Software.
1412
*
15-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21-
* THE SOFTWARE.
13+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
14+
* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
16+
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2218
*/
2319
package com.iluwatar.singleton;
2420

@@ -34,8 +30,10 @@ public final class ThreadSafeLazyLoadedIvoryTower {
3430
private static ThreadSafeLazyLoadedIvoryTower instance;
3531

3632
private ThreadSafeLazyLoadedIvoryTower() {
37-
// to prevent instantiating by Reflection call
38-
if (instance != null) {
33+
// protect against instantiation via reflection
34+
if (instance == null) {
35+
instance = this;
36+
} else {
3937
throw new IllegalStateException("Already initialized.");
4038
}
4139
}
@@ -44,7 +42,6 @@ private ThreadSafeLazyLoadedIvoryTower() {
4442
* The instance gets created only when it is called for first time. Lazy-loading
4543
*/
4644
public static synchronized ThreadSafeLazyLoadedIvoryTower getInstance() {
47-
4845
if (instance == null) {
4946
instance = new ThreadSafeLazyLoadedIvoryTower();
5047
}

0 commit comments

Comments
 (0)
0