싱글톤 패턴 시스템 런타임이나 환경 셋팅에 대한 정보등 클래스 인스턴스가 여러개일 때 문제가 발생할 수 있는 요구사항이 있다. 이럴 경우 싱글톤 패턴을 활용한다면 인스턴스를 오직 한개만 만들어 제공할 수 있다. 우선 가장 기본적인 싱글톤 예제를 보자. public class Settings { private static Settingsinstance; private Settings() { } public static Settings getInstance() { if (instance== null) { instance= new Settings(); } return instance; } } 싱글톤 구현 방법중에서 이러한 예제를 가장 많이 보았을 것 같다. 하지만 이 예제는 멀티스레드 환경을 전혀 고려하지 못..
데이터 클래스 데이터 클래스는 데이터를 보관하거나 전달하기 위한 목적을 가진 객체를 설계할 때 활용할 수 있습니다.(DTO) class 키워드 앞에 data 를 선언하여 사용할 수 있습니다. data class Room(var roomType: String, var price: Int) 이렇게 data 키워드를 사용하게 되면 코틀린 컴파일러가 아래의 함수들을 자동으로 생성해줍니다. equals() hashCode() toString() componentN() copy() 기존 자바 개발자분들은 Spring Framework를 이용하여 웹 어플리케이션을 개발할 때, Lombok 라이브러리를 많이 이용하셨을텐데요. 거기에서 @Data 어노테이션과 비슷한 역할을 한다고 보시면 될 것 같습니다. 뿐만 아니라 J..
Kotlin Collection 1. Collection Types 코틀린은 자체적으로 기본 컬렉션 타입인 List, Set, Map을 제공하고 있습니다. 코틀린은 두가지 성격의 컬렉션을 제공합니다. - 가변 컬렉션(mutable) : 자바의 컬렉션처럼 가변적으로 삽입, 수정, 삭제 작업이 가능한 컬렉션 - 불변 컬렉션(immutable) : 자바의 unmodifiableList 처럼 해당 컬렉션의 인스턴스 뿐만아니라 내부 값까지도 불변하도록 처리하는 컬렉션 타입 2. 컬렉션 생성하기. Immutable List val roomTypeList = listOf("원룸", "투룸", "아파트", "오피스텔") - 해당 list의 참조를 확인해보았을 때, 추가, 수정, 삭제 함수가 없다. -> 컬렉션 내부를 ..
switch 문을 사용하는 여러 예제들을 정리해보자! public enum RoomType { BILLA, OFFICETEL, APT; } 위 enum이 있을 때, switch문이 없는 경우 아래처럼 코드를 짤 수 있을 것입니다. public void exampleOfIf(RoomType roomType) { if (roomType == RoomType.APT) { System.out.println("아파트"); } else if (roomType == RoomType.BILLA) { System.out.println("일반주택"); } else if (roomType == RoomType.OFFICETEL) { System.out.println("오피스텔"); } } 위 처럼 코드를 짜는 경우는 보기도..
코틀린도 자바와 마찬가지로 enum 타입의 클래스를 제공한다. 자바와 동일하게 상수 클래스로써의 역할을 한다. 코드를 살펴보자 enum class PaymentStatus { UNPAID, PAID, FAILED, REFUNDED } 자바와는 다르게 enum 키워드 뒤에 class라는 키워드를 붙여주어야 한다. 이제 필드를 추가해보자. 해당 enum의 상수가 어떤 값인지를 나타내는 label 문자열 변수를 추가해보자. enum class PaymentStatus(val label: String) { UNPAID("미지급"), PAID("지급완료"), FAILED("지급실패"), REFUNDED("환불") } 해당 값을 출력해보자 fun main() { println(PaymentStatus.UNPAID...
HTTP Request 요청 정보중에서 Query Param Request Body 위 두가지의 유효성 검사를 위해서 javax.validation.contraints 패키지 내의 @NotNull, @NotEmpty, @NotBlank 등의 어노테이션을 활용하는 경우가 있다. @NotNull은 Nullable한 타입에 선언해야하는데.. 왜냐하면 int나 char 같은 primitive 타입은 null을 포함할 수 없기 때문이다. 이와 마찬가지로 @NotBlank와 @NotEmpty도 마찬가지로 유효성 검사를 진행할 수 있는 타입이 존재한다. @NotBlank 단 하나의 공백 문자열도 포함하지 않는다. -> 오로지 문자열에 해당함.(String, CharSequance) 주석내용 : The annotate..
코틀린의 class 타입은 기본적으로 final 입니다. final 키워드가 클래스에 붙게 되는 경우 해당 클래스는 상속을 이어갈 수 없는 클래스가 됩니다. 자바에서는 모든 클래스가 상속이 가능하며 final 키워드를 활용하여 추후 상속가능성을 닫는 구조였습니다. 하지만 kotlin은 class가 상속을 허용해주는 방향으로 발전해나갔으며 해당 키워드는 open 입니다. open class Dog { // 상속이 가능한 상태의 클래스 open var age: Int = 0 open fun bark() { println("멍멍") } } Dog 클래스의 필드, 함수들 또한 클래스와 마찬가지로 open 키워드를 통해 오버라이딩을 허용해주어야 합니다. 해당 Dog 클래스를 상속하는 ChildDog 클래스를 만들..
클래스 (Class) 일단 클래스를 알기 전에 코틀린 파일의 특징부터 알아야 합니다. 코틀린 파일은 xxx.kt 형태로 작성하며 안쪽 구조는 java와는 다소 큰 차이가 있습니다. 우선 메소드가 kt 파일 내에 클래스의 존재와 관련없이 존재할 수 있습니다. // 일반 클래스 class Test(val test: Int) { } // 클래스와 떨어진 함수. fun test() { println("test") } 위의 일반 클래스에서 (val test: Int) 표현은 생략된 생성자 표현입니다. 생성자는 constructor 키워드로 아래와 같이 표현할 수도 있습니다. 하지만 표현상 constructor를 제외한 표현이 더욱 간소화되기도 하고 가독성도 좋기 때문에 대체로 생략하는 편입니다. class Tes..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.