#10 effective java: item 4

This commit is contained in:
haerong22
2022-05-17 02:26:19 +09:00
parent e831ce5943
commit b4d9a0a296
5 changed files with 54 additions and 1 deletions

View File

@@ -1,5 +1,7 @@
package com.example.effectivejava.chapter01.item03.staticfactory;
import java.util.function.Supplier;
// 코드 3-2 정적 팩터리 방식의 싱글턴 (24쪽)
public class Elvis implements Singer {
private static final Elvis INSTANCE = new Elvis();
@@ -15,6 +17,8 @@ public class Elvis implements Singer {
Elvis elvis = Elvis.getInstance();
elvis.leaveTheBuilding();
Supplier<Elvis> supplier = Elvis::getInstance;
System.out.println(Elvis.getInstance());
System.out.println(Elvis.getInstance());
}

View File

@@ -7,7 +7,6 @@ public class MetaElvis<T> {
private MetaElvis() { }
@SuppressWarnings("unchecked")
public static <E> MetaElvis<E> getInstance() { return (MetaElvis<E>) INSTANCE; }
public void say(T t) {

View File

@@ -0,0 +1,17 @@
package com.example.effectivejava.chapter01.item04;
public abstract class AbstractUtilityClass {
public AbstractUtilityClass() {
System.out.println("constructor");
}
public static String hello() {
return "hello";
}
public static void main(String[] args) {
String hello = AbstractUtilityClass.hello();
}
}

View File

@@ -0,0 +1,9 @@
package com.example.effectivejava.chapter01.item04;
public class DefaultUtilityClass extends AbstractUtilityClass {
public static void main(String[] args) {
DefaultUtilityClass utilityClass = new DefaultUtilityClass();
utilityClass.hello();
}
}

View File

@@ -0,0 +1,24 @@
package com.example.effectivejava.chapter01.item04;
public class UtilityClass {
/**
* 이 클래스는 인스턴스를 만들 수 없습니다.
*/
private UtilityClass() {
throw new AssertionError();
}
public static String hello() {
return "hello";
}
public static void main(String[] args) {
String hello = UtilityClass.hello();
UtilityClass utilityClass = new UtilityClass();
utilityClass.hello();
}
}