generic 을 이용한 배열 객체를 생성할때는 컴파일단에서 에러가 발생하게된다. List[] lists = new ArrayList[10]; ArrayList 의 배열을 만들고자하는 코드다. 대충 쉽게 이해하면 일종의 2차원 배열이라고 볼 수 있다. 하지만 이 코드는 'generic array creation' 이라는 컴파일 에러와 함께 컴파일 되지않는다. 왜 이럴까? 먼저 제네릭이 추구하는 바가 뭔지를 알아보고, 배열과 제네릭 리스트의 차이를 이해해야 컴파일러가 저걸 왜 막는지 이해할 수 있다. 제네릭이 추구하는 바는 타입 안정성이다. 제네릭이 사용된 코드는 타입 안정성을 보장해야한다. 타입 안정성이 보장될 수 없다면 제네릭은 사용될 이유가 없다. 그런데 배열과 제네릭의 차이점으로 인해 제네릭 배열은..
1. 축구경기 국가대표 축구경기가 있다고 생각해보자. 골이 들어갈때마다 네이버와 다음 각 포털의 데이터가 변경되어야한다. 이를 어떻게 구현하면 될까? 첫번째 방법은 담당자가 축구를 보다가 골이 들어갈때마다 데이터를 변경해주는 수동 방법이있다. 수동방법을 몰라서 이 포스팅을 하는건 아니니 넘어가자. 두번째 방법은 축구협회에서 현재 골득점 상황을 알려주는 API를 제공한다고 가정했을때(제공안해주면 크롤링을 해서라도..), 각 포털사가 지속적으로 API를 호출하면서 데이터 변경 유무를 체크하는 방법이 있을 수 있다. 이 방식으로 구현하면 적어도 담당자가 직접 수작업은 하지않아도 되니 자동화가 가능해진다. 다만 축구협회 API를 호출하는 주기를 어떻게 잡을것인지가 중요하다. 너무 짧게 잡으면 축구협회 API에 ..
1. 코드 스멜 게임을 만든다고 생각해보자. 각각의 몬스터들을 객체로 만드려고한다. 객체를 만드려면 일단 클래스가 있어야하니 클래스를 정의하자. public abstract class Monster { public abstract void attack(); } 몬스터들간의 다형성을 위해 Monster 추상 클래스를 정의했다. 이번 포스팅은 attack() 메서드부분을 리팩토링해나가는 과정을 작성하려한다. 그래서 메서드는 attack() 만 간단하게 정의했다. public class Knight extends Monster { @Override public void attack() { System.out.println("칼 공격!"); } } Knight 몬스터를 정의했다. Knight 몬스터 외에 Ske..
이펙티브자바를 보던중 평소에 잘 모르는 상태로 혼용하고있던 네이밍 컨벤션에 대해 잘 설명해주고있어 정리한다. from: 하나의 매개변수를 받아서 인스턴스를 생성 of: 여러개의 매개변수를 받아서 인스턴스를 생성 instance or getInstance: 인스턴스를 반환하지만 동일한 인스턴스임을 보장하지 않는다. 보통 singleton을 구현할때 많이 사용하는 네이밍이지만 singleton이랑은 무관하게 매번 신규 생성될 수 있다. create or newInstance: 매번 새로운 인스턴스를 반환한다. instance or getInstance 의 서브셋 개념이라고 볼 수 있을듯 getXxxx: getInstance와 같으나 호출하는 클래스와 다른 타입의 인스턴스를 반환할때 사용 예를들어 Date.g..
- Total
- Today
- Yesterday
- mariadb
- code
- MySQL
- Git
- programming
- db
- http
- clean code
- Design Pattern
- toby
- frontcode
- java
- Jackson
- backend개발환경
- EffectiveJava
- 정규표현식
- frontend개발환경
- TEST
- JPA
- Spring
- Kotlin
- spring cloud
- generics
- go-core
- JavaScript Core
- DesignPattern
- javascript
- OOP
- servlet
- java8
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |