질문 정리 36

코틀린과 지연 초기화, UninitializedPropertyAccessException 방지법

이번에 지연초기화에 대해서 배웠는데 너무 필요했던 내용들이라서 정리해두려고 합니다. lateinit 코틀린에서 지연 초기화란 객체의 초기화를 객체가 필요한 시점에 이루어지도록 늦추는 것을 의미합니다.원래는 선언하는 즉시 초기화 해야하는 것을 초기 값을 입력하지 않고, 이후에 초기화 할 수 있습니다. 따라서 객체가 다른 객체에 의존하는 경우 해당 객체들이 모두 생성되기 전까지 초기화를 지연시킬 수 있습니다. lateinit 지연 초기화를 사용하면서 주의할 점이 있습니다. 변수가 초기화 되기 전에 호출되는 경우, UninitializedPropertyAccessException이 발생할 수 있습니다. 이러한 문제를 방지하기 위해서 호출하기 전에 초기화가 되었는지 체크하는 것이 좋습니다. class MyCla..

질문 정리 2023.03.15

editText에 setText로 값을 넣어야하는 이유가 뭘까?

최근 안드로이드 앱 개발을 하다가 궁금한 것이 생겨서 정리했습니다. TextView에 String 값을 대입할 때는 binding.textView.text = "String"을 넣고, EditText에 String 값을 대입할 때는 binding.editText.setText("String")의 형식으로 넣고 있었습니다. 평소 너무 당연하게 사용하고 있었지만, 왜 이렇게 다른 방식을 사용하는 지는 모르고 있었습니다. TextView와 같은 방식으로 EditTextView에 대입을 하려고 하면 오류가 발생합니다. binding.editText.text = "String" binding.editText.text는 Editable 객체이고, "String"은 문자열(String) 타입입니다. 따라서, 두 개의..

질문 정리 2023.03.15

Toast.makeText()를 사용할 때, context를 달라고 하면 this를 입력하는 이유는 뭘까?

안드로이드 스튜디오를 사용하면서 Toast를 사용하게 될 일이 종종 있습니다. 여기서 context는 Toast가 표시될 Context, text는 Toast에 표시될 text, duration은 Toast가 표시될 시간을 의미합니다.따라서 아래와 같은 형식으로 사용할 수 있습니다. Toast.makeText(getApplicationContext(), "Hello, world!", Toast.LENGTH_SHORT).show(); 이 코드는 getAppicationContext()를 사용하여 현재 애플리케이션의 컨텍스트를 가져오고, "Hello, world!"라는 text를 짧게 표시합니다. 하지만 우리는 아래와 같은 형식으로 더 많이 사용합니다. Toast.makeText(this, "Hello, w..

질문 정리 2023.03.14

Object와 Any, void와 Unit

자바 Object와 코틀린 Any 코틀린의 Any 클래스는 자바의 Object 클래스와 기능이 유사합니다. 둘 다 모든 클래스의 기본 클래스이며, 모든 객체의 상위 클래스입니다. 하지만 Any 클래스는 자바의 Object 클래스보다 더 많은 기능을 제공합니다. 예를 들어, 코틀린의 Any 클래스는 다음과 같은 기능을 제공합니다. equals() : 메서드를 오버라이딩하여 객체의 값 비교를 할 수 있습니다. hashCode() : 메서드를 오버라이딩하여 객체의 해시 코드를 계산할 수 있습니다. toString() : 메서드를 오버라이딩하여 객체를 문자열로 표현할 수 있습니다. 따라서, 코틀린에서 Any 클래스를 사용하여 객체를 정의하면 equals(), hashCode(), toString() 등의 메서드..

질문 정리 2023.03.14

코틀린 Number란 무엇일까?

Number란? 코틀린에서 Number는 숫자 타입의 공통 기능을 제공하는 추상 클래스입니다. 코틀린에서 제공하는 숫자 타입은 다음과 같습니다. Byte: 8비트 부호 있는 정수 타입 Short: 16비트 부호 있는 정수 타입 Int: 32비트 부호 있는 정수 타입 Long: 64비트 부호 있는 정수 타입 Float: 32비트 IEEE 754 부동 소수점 타입 Double: 64비트 IEEE 754 부동 소수점 타입 이러한 숫자 타입은 Number 클래스를 상속하고 있으므로, 공통적으로 toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble() 등의 메서드를 가지고 있습니다. 이 메서드들은 해당 숫자 타입으로 변환하는 기능을 제공합니다. 또한, 코틀린에..

질문 정리 2023.03.14

왜 List<String> list = new ArrayList<>()라고 쓸까??

= 업캐스팅을 하는 이유 List list = new ArrayList(); ArrayList list = new ArrayList(); List와 ArrayList는 다르다. public interface List extends Collection public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable List는 Collection을 상속(extends) 받은 interface이고, ArrayList는 List를 상속(implements) 받은 Class이다. 기본적으로 우리가 자바에서 할당을 하는 방법이다. ArrayList list = new ArrayList(); 우리는 보통 ..

질문 정리 2023.02.16