Kotlin
-
[Kotlin] ExceptionKotlin/Exception 2021. 8. 14. 13:59
-- try catch에도 null체크가 엄격하다. try블록안에서 선언된 변수는 try블록에서만 사용가능하기 때문에 main함수 scope에 변수를 선언하였다. try블록에서는 항상 예외가 발생할 수 있기 때문에 try문에서 초기화를 해도 예외로 인해 초기화 부분이 실행 되지 않을 수도 있다. 그렇기 때문에 try블록에서 초기화를 한다해도 catch나, finally에서 변수를 사용할 수 없다. --코틀린의 try는 표현식이다( 값을 return한다 ) try블록의 마지막 표현식, catch블록의 마지막 표현식이 리턴될 값에 해당된다. finally절은 표현식의 리턴에 영향을 주지 않는다. 예외가 발생하지 않으면 try의 가장 마지막 expression이 대입되고 예외가 발생하면 catch의 가장 마지..
-
[Kotlin] Type check and Type castsKotlin/Types 2021. 8. 13. 19:02
kotlin은 nullable변수가 존재해서 간단한 연산자조차도 어렵게 느껴진다...... is와 as연산자를 살펴보고 ?가 붙어있을 때는 어떻게 동작하는지에 대해서 알아보자. 다음과 같이 사용할 수 있다. x is String? x is String x as String x as? String x as? String? 코틀린에서는 nullable한 변수가 존재하기 때문에 연산자를 사용할 때도 상황에 따라 ?를 붙여줘야 한다. is and !is operator - 타입 체크 연산자 변수에 담겨있는 인스턴스가 비교하는 클래스와 같은범위, 넓은범위이면 true 비교하는 인터페이스를 구현하였으면 true 자바의 instanceof연산자와 같다. 밑의 테스트1, 테스트2, 테스트3는 x is 클래스? 에 대한..
-
[Kotlin] Null SafetyKotlin/Null Safety 2021. 8. 9. 14:19
자바도 부족한데 코틀린 코드를 쓰려니 컴파일 에러가 자꾸나서....null부분 reference를 다시 한번 보러 들어갔다. 코틀린 Null Safety 부분을 보고 모르는 것만 정리했다. 코틀린에서는 null과 관련하여 non-null 변수 nullable변수 두가지 종류가 있다. 변수 선언시 타입뒤에 ?를 통하여 nullable변수임을 명시한다. var str: String //non-null변수 var str: String? //nullable변수 non-null변수에는 명시적으로 null로 초기화가 불가능하다(컴파일 에러) nullable변수는 null이 들어갈 수 있는 변수로 멤버( 프로퍼티 접근자(getter,setter), 메서드 ) 를 사용하기 전에는 null체크를 해야한다. 그렇지 않으면..
-
[Kotlin] property, function 오버라이딩(with java)Kotlin/Overriding 2021. 7. 24. 04:38
자바의 다형성과 참조변수 up casting, down casting에 대해서는 설명하지 않는다. 기본적으로 property오버라이딩은 getter,setter까지 같이생각해야하니 property의 이해가 우선이다. property포스팅 https://hellose7.tistory.com/23 이번 포스팅의 가장 마지막 부분에 자바 다형성 테스트를 넣어놨다 자바에서 조상 , 자손 간에 중복된 메서드(오버라이딩된 메서드) , 중복된 멤버변수에 따라 호출되는 것이 다르기 때문에 꼭 보고 이 글을 읽자. property가 오버라이딩 되어있을 때 decompile해서 자바로 확인해보니 자바의 조상과 자손 클래스에 동일한 멤버변수가 선언되었을 때로 보면 이해하기 쉬웠다. 결과적으로 open, overriding문..
-
[Kotlin] 코틀린 패키지 / .kt파일과 .java파일 (feat. top-level선언)Kotlin/Types 2021. 7. 21. 21:50
Extension Function을 다시보다가 top-level 접근제한자를 보려고 들어왔는데 어찌이리 개판으로 정리해놨는지 다시 정리한다.... 이미지 출처: Do it 코틀린 프로그래밍 패키지 선언은 자바처럼 소스파일의 첫줄에 한다. It is not required to match directories and packages: source files can be placed arbitrarily in the file system. 코틀린의 경우 디렉토리(폴더)구조와 패키지구조의 일치는 필수가 아니다. 그러나 관습으로 일치시켜야 한다( 헷갈리게 다르게 하는 사람이 있을까?? ) 이클립스의 경우 폴더와 패키지가 일치해야 했다. 일반적으로 안드로이드 스튜디오에서 파일이나 패키지를 만들때 디렉토리와 패키지..
-
[Kotlin] val / const valKotlin/Types 2021. 7. 21. 18:32
val 프로퍼티 runtime시점에 값을 할당 할당 가능한 타입: 기본 타입, 참조 타입 const val 프로퍼티 const키워드 compile시점에 값을 할당 compile시점에 할당된다는 것은 메서드, 생성자 등으로 할당할 수 없다는 말이다. 그렇기 때문에 기본 자료형의 리터럴로 초기화해야한다. 또는 현재 const val 프로퍼티의 코드 윗줄에 선언된 다른 const 프로퍼티로 초기화하는 것도 가능하다 할당 가능한 타입: 기본타입, String 다음의 조건을 만족하지 않으면 에러가나게 된다. read-only(val)프로퍼티의 값을 compile시점에 예상할 수 있으면 const modifier를 사용해라. const프로퍼티는 다음을 만족해야 한다. top-level 프로퍼티가 가능하다(top-l..
-
[Kotlin] Property란 ( + 자바의 field와 다른점)Kotlin/Property 2021. 7. 13. 19:05
이번에 다뤄볼 내용 코틀린이 property에 접근하는 방식 코틀린 getter,setter선언법 코틀린 backing field의 개념과 field키워드 코틀린 getter,setter선언 방식에 따른 backing field 생성유무 코틀린 property, getter, setter의 visibility modifier property overriding은 다른 포스팅에 존재 (내용 추가됨) 코틀린의 property는 field, getter, setter 이 세가지를 통칭하는 개념이다. 코틀린의 property의 값을 읽어올때는 getter가 호출되고 값을 쓸땐 setter가 할당된다. 코틀린의 var name: String ="hyun" 코드는 자바에서 처럼 String name="hyun" 과..
-
[Kotlin] 클래스 선언/생성자/ 생성자 상속Kotlin/Constructor 2021. 7. 10. 20:34
클래스 선언 class 이름 헤더{ //클래스 선언 바디 } 클래스의 헤더나 바디는 모두 optional이 될 수 있다. class 이름 헤더 //바디가 없는 경우 class 이름 //헤더와 바디 모두 없는 경우 생성자 생성자는 하나의 주생성자(primary constructor)와 여러개의 부생성자(secondary constructor)를 가질 수 있다. 주생성자, 부생성자는 constructor키워드를 사용한다. 1. 주생성자 (primary constructor) 클래스헤더 부분에는 주생성자를 파라메터와 함께 명시하는 곳이다. 파라메터도 optional이다. class Person constructor(personName: String, age: Int){ } 주생성자에 anotation, vis..