목록Kotlin (14)
변명은 만개 결과는 한개

본 게시글은 Acaroom x Boostcourse Live! 콬! LIVE 강의 - 코틀린 특징 영상을 보며 정리한 글입니다 Kotlin 특징 코틀린의 특징 #1 - Statically Typed 기본적으로 정적 타입 언어이다 컴파일 시 변수의 자료형(Type) 이 결정되어 안전 코틀린과 달리 Python 혹은 JavaScript 는 동적타입 # Python 코드(동적 타입)의 예 m = 13 # int m = "hello" # str m = 13.0 # float // Kotlin 코드(정적 타입)의 예 var m: Int = 13 m = 15 // Ok m = "hello" // Error m = 15.0 // Error 단, Kotlin/JS 를 쓸 때는 동적 타입 지원을 위해 dynamic 키워..

Companion class companion object 일반적인 클래스의 변수와 메소드를 직접 접근할 수 있도록 만들어주는것. 간단히 말하면 java의 static 형태로 접근이 가능한 변수와 메소드를 만들어주는것 class 내에 정의할 수 있음 Java 에서처럼 Class.TYPE 형태로 직접 접근 가능 static은 아님 // class 내에 직접 접근을 위한 함수와 변수 정의 class Sample { val name: String = "Name" companion object { val type: Int = 0 fun isTypeZero(): Boolean { return type == 0 } } } interface와 함께 사용 interface Base { val name: String f..
보호되어 있는 글입니다.

클래스 상속(class inheritance) open class 코틀린은 class에 open 키워드를 붙이지 않으면 기본적으로 final 이다. 그러므로 클래스의 상속 을 하기 위해서는 open 키워드로 final 키워드를 제거해주어야한다 open class Empty(a: Int) class Sample(a: Int) : Empty() java View class 상속 ConstraintLayout 상속받는 코드를 예시로 생성자 연습 // secondary 생성자 활용 class CustomConstraintLayout( context: Context, attrs: AttributeSet?, defStyleAttr: Int) : ConstraintLayout(context, attrs, defSty..

유용한 null 처리 방법 안전한 형 변환 Java 의 경우 instanceof 키워드를 사용하여 안전하게 처리 Object object = "name"; // String int index = 0; if (object instanceof Integer) { index = (int) object; } System.out.println("index " + index); // output: 0 Kotlin 의 경우 as(casting) 뒤에 ? 키워드를 붙여 안전하게 형 변환 val a: Any? = "ABC" val b: Int? = a as Int // Cast Exception 발생 val b: Int? = a as? Int // output: null val b: Int? = a as? Int ?: ..

null 처리방법 Null 처리 자바 (기본적으로)null을 허용한다 Annotation 으로 @NonNull, @Nullable 지정 가능 public void set(@NonNull String a, @Nullable String b) { // ... } Annotation을 사용할 수 있으나 아래 코드 또한 사용 가능 set(null, null); 코틀린 (기본적으로)null을 허용하지 않음 null을 명시적으로 나타내기 위해서 ?을 추가해야한다 자바와 달리 IDE 에서 null을 사용할 수 없음을 즉시 알려줌 fun set(a: String, b: String?) { // ... } null을 허용하지 않은 변수인 a 에 null을 대입하면 IDE 단에서 즉시 오류가 발생함. 아래와 같은 코드 사..

Return, Jumps, This Expression Jump Expression return 반환할 때 break 빠져나갈때 continue 특정 조건에 대해서만 처리하지 않을 때. 이러한 jump expression을 label 과 함께 사용했을때 어떻게 달라지는지 확인 Label 정의 정의할 때 : name@ 사용할 때 : @name Break and Continue Labels loop@ for (i in 1..100) { for (j in 1..100) { if (j > 10) break@loop print(j) } println() } println("end") output: 12345678910end Return at Labels vak ints = mutableListOf(1, 2, 0,..

Lambdas 코틀린에서는 기본적으로 람다를 제공하고있음. button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { view.setAlpha(0.5f); } }); 위와같은 java 코드가 setOnClickListener 의 구현해야하는 메소드가 한가지(onClick()) 뿐이기에 아래와 같이 3줄로 줄어들 수 있음 button.setOnClickListener { view -> view.alpha = 0.5f } 또 한번 더, onClick() 메소드가 싱글 파라미터(한가지의 파라미터만을 가지는 메소드) 이기에 it 키워드를 사용하여 아래와 같이 생략 가능함 button.setOnCl..