반응형
kotlin 으로 java springboot 프로젝트를 리팩토링 하며 알게된..
- java와 kotlin의 차이
- java와 kotlin 코드에 사용되는 몰랐던 개념
- 좋은 코드를 위한 고민
Any
- type을 Any라는 키워드로 지정할 수 있다
- Any
- Java의 Object에 해당된다
when
- 인수에 대응하는 모든 분기를 조건이 충족될때까지 순차적으로 맞춰본다
- 모든 가능한 경우가 존재한다고 증명할 수 없는 경우에 else는 꼭 있어야 한다
companion object
- 코틀린에는 정적변수 혹은 메소드가 없고, 대신 패키지 내에 함수를 선언하여 사용할 수 있다
- kotlin은 static 키워드 대신 companion object 기능을 제공
- companion은 클래스 내부에 companion이라는 정적(static) 객체를 생성하고 그 객체안에 변수를 만들어줌
- java의 static object
- 실제 소스에서 static을 사용, 모든 객체가 공유한다
- static이 붙은 메소드들은 객체들의 데이터와 관계 없는 완벽하게 공통적인 로직을 정의할 때 사용
- 단 한번만 동작하게 하는 static
- static이 실행되는 시점은 클래스가 메모리상에 올라갈 때
- 프로그램을 실행하면 필요한 클래스가 메모리상에 로딩됨
- 한번 로딩된 클래스는 메모리에 상주하다가 객체를 생성
java - super
- super 키워드는 부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는 데 사용하는 참조 변수
- 부모 클래스의 멤버와 자식클래스의 멤버 이름이 같은 경우 super 키워드를 사용하여 구별
- super()
- 부모클래스의 생성자를 호출할 때 사용
- 자식 클래스의 생성자 첫줄에 명령문 추가하여 부모 클래스의 멤버를 초기화하도록 함
- 모든 클래스는 Object라는 최상위 클래스를 상속받는다
- 코드 상으로는 보이지 않지만 extends Object를 하고 있다
- toString(), eqaul() 과 같은 메소드가 미리 정의되어 있다
@Resource
- @Autowired, @Inject 와 같이 의존을 주입
- @Resource
- Java 에서 지원하는 어노테이션
- 검색방식 : 이름으로 연결 안되면 타입
- @Autowired
- spring framework에서 지원하는 어노테이션
- 타입으로 연결 안되면 이름
- 스프링 프레임워크를 쓰다 다른 프레임워크로 수정할 경우에 많은 리소스가 발생
vararg
- 가변인자
- java의 가변인자 : … 으로 표시
kotlin null 처리
- ?.
- 안전호출
- 앞의 타입이 null이 아닌 경우만 호출을 해서 값을 리턴
- 아닌 경우 null호출
- 엘비스 오퍼레이터와 함께 사용 가능
- !!
- nullpointer exception을 굳이 보고 싶으면 사용
kotlin object
- singleton 패턴
- 어떤 클래스가 최초 한번만 메모리를 할당하고 (static)
- 그 메모리에 객체를 만들어 사용하는 디자인 패턴
- 생성자의 호출이 반복적으로 이루어 져도, 실제로 생성되는 객체는 최초 생성된 객체를 반환해주는 방식
- kotlin 에서는 object 키워드로 시작
- class와 달리 객체 선언문이 있는 위치에서 생성자 호출 없이 즉시 만들어지므로 생성자 정의가 필요 없다
- 클래스, 인스턴스도 상속 가능
::
- method reference
- 객체::변수명, 객체::함수명
Reference
반응형
'Backend' 카테고리의 다른 글
spring boot 에서 etag 설정하기 (0) | 2021.11.29 |
---|---|
docker quick start 따라해보기 (0) | 2020.06.07 |
왜 도커를 사용해야 할까요? (0) | 2020.06.07 |
kotlin으로 java springboot 프로젝트 리팩토링 하기 (0) | 2020.04.11 |
👩🏻💻신입사원의 레거시 코드 뽀개기 (1) | 2020.04.03 |