반응형

자바 8

[열거 타입] Enum 공부하다 생긴 의문점 2가지

Enum 클래스 먼저 Enum 클래스의 코드를 살펴보겠습니다 public abstract class Enum implements Comparable, Serializable { private final String name; private final int ordinal; public final String name() { return this.name; } public final int ordinal() { return this.ordinal; } protected Enum(String name, int ordinal) { this.name = name; this.ordinal = ordinal; } public String toString() { return this.name; } public fin..

개발 2022.03.02

[제네릭] 타입 안전 이종 컨테이너.. 이거 어디에 사용할까?

궁금증 이펙티브 자바 "아이템 33 - 타입 안전 이종 컨테이너를 고려하라"를 읽으면서 든 궁금증이다. 그래... 다양한 타입을 하나의 컬렉션 등에 넣기 위해, 예를 들어 Map의 key에는 클래스 리터럴 값을 넣고 value에는 Object를 받는다고 치자. 저 map에서 put과 get을 할때 메서드를 직접 구현해서 type.cast() 등을 활용해서 타입 안전하게 여러 타입을 넣을 수 있게 되었다. 교재에서는 이러한 동적 형변환으로 런타임 타입 안전성을 확보하는 방식을 java.util.Collections에 있는 checkedSet, checkedList, checkedMap 같은 메서드를 만들 때 적용했다고 한다. 그래 알겠다.. 이 래퍼들은 제네릭과 로 타입을 섞어 사용하는 애플리케이션에서 클..

개발 2022.02.21

[제네릭] 컬렉션이나 단일 원소 컨테이너에서 매개변수화 되는 대상은 무엇일까?

이펙티브 자바 "아이템 33 - 타입 안전 이종 컨테이너를 고려하라"를 읽는 도중, 한 구문이 이해가 되지 않았습니다. 다음은 이펙티브 자바 198쪽에 나오는 문단입니다. 제네릭은 Set, Map 등의 컬렉션과 ThreadLocal, AtomicReference 등의 단일원소 컨테이너에도 흔히 쓰인다. 이런 모든 쓰임에서 매개변수화되는 대상은 (원소가 아닌) 컨테이너 자신이다. 따라서 하나의 컨테이너에서 매개변수화할 수 있는 타입의 수가 제한된다. 컨테이너의 일반적인 용도에 맞게 설계된 것이니 문제될 건 없다. 예컨대 Set에는 원소의 타입을 뜻하는 단 하나의 타입 매개변수만 있으면 되며, Map에는 키와 값의 타입을 뜻하는 2개만 필요한 식이다. 저는 2번째 줄인 "이런 모든 쓰임에서 매개변수화되는 대..

개발 2022.02.20

[Java] 공급자 Supplier<T>

공급자 내부 코드 @FunctionalInterface public interface Supplier { T get(); } Supplier는 매개변수를 받지 않고 단순히 반환하는 추상 메서드가 존재한다 활용 방식 1. 문자열 return public class SupplierStringReturn { public static void main(String[] args) { Supplier helloSupplier = () -> "Hi"; System.out.println(helloSupplier.get()); } } // 결과 // Hi 2. 객체 return public class SupplierObjectReturn { static class Point { } public static void ma..

개발 2022.01.25

[5분 개념] 제네릭 싱글턴 팩터리

제네릭 싱글턴 팩터리 정의 제네릭으로 타입 설정 가능한 인스턴스를 만들어두고, 반환 시에 제네릭으로 받은 타입을 이용해 타입을 결정한다. 장점 여러 타입으로 내부 객체를 받아도 에러가 나지 않는다 큰 유연성을 제공한다 public class GenericSingletonFactory { public static final Set EMPTY_SET = new HashSet(); public static final Set emptySet() { return (Set) EMPTY_SET; } public static void main(String[] args) { Set set1 = GenericSingletonFactory.emptySet(); Set set2 = GenericSingletonFactory...

개발 2022.01.24

[Java] 예제 코드로 알아보는 다형성 - 2

2022.01.24 - [Java] - [Java] 예제 코드로 알아보는 다형성 - 1 [Java] 예제 코드로 알아보는 다형성 - 1 정의 다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조 hwan33.tistory.com 이전 포스팅을 이어가도록 하겠습니다. 다형성 Quiz 1. 다음 코드의 결과를 예측하시오 class SuperClass { String x = "super"; public void method() { System.out.println("super class method"); } } class SubClass extends SuperClass..

개발 2022.01.24

[Java] 예제 코드로 알아보는 다형성 - 1

정의 다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있습니다. 다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다. 참고 Tcp School 저도 다형성의 정의에 대해서는 이해하고 있다고만 생각했습니다. 왜냐하면 아래와 같은 코드들을 활용한다면 다형성을 충분히 이용하는 것이라 생각했기 때문입니다. class Animal {...} class Human extends Animal {...} class Korean extends Human {...} public class Main { public..

개발 2022.01.24
반응형