일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 안드로이드개발
- Android
- 안드로이이드 submodule
- submodule pull
- 2d게임
- 안드로이드
- 앱
- 쿼터뷰
- gitlab submodule
- 티스토리
- 타이쿤
- 게임개발
- 내 맘대로 정리한 안드로이드
- DataBinding
- github submodule
- 개발
- firebase
- submodule sourcetree
- 서브모듈 pull
- 서브모듈 sourcetree
- Unity
- 카페오냥
- Kotlin
- 코틀린
- java
- GIT
- 앱개발
- github
- Android Studio
- 유니티
- Today
- Total
목록Kotlin (12)
Uing? Uing!!
자바 내부에서 bitCount를 세는 방식을 찾아보니 아래와 같이 카운팅하고 있었다. /** * Returns the number of one-bits in the two's complement binary * representation of the specified {@code int} value. This function is * sometimes referred to as the population count. * * @param i the value whose bits are to be counted * @return the number of one-bits in the two's complement binary * representation of the specified {@code int} v..
View.setOnClickListener 안드로이드의 View.setOnClickListener는 아래처럼 OnClickListener라는 인터페이스를 받도록 설계되어 있다. public void setOnClickListener(@Nullable OnClickListener l) { if (!isClickable()) { setClickable(true); } getListenerInfo().mOnClickListener = l; } 이 구조에 정확하게 맞추어서 코틀린 코드를 작성한다면 이렇게 될 것이다. button.setOnClickListener(object: View.OnClickListener { override fun onClick(v: View?) { println("Clicked!") ..
아래 코드는 Animal이라는 클래스와 이를 상속받은 Dog와 Cat이라는 클래스이다. open class Animal { open fun makeSound() { println("making sound...") } } class Dog : Animal() { override fun makeSound() { println("bark!") } } class Cat : Animal() { override fun makeSound() { println("meow~") } } Animal 클래스의 인스턴스에 대해 makeSound() 메소드를 호출하면 "making sound..."라는 결과값이 출력된다. 반면 Dog, Cat 클래스의 인스턴스에 대해서는 이 문자열이 아닌 "bark!" 또는 "meow~"만이 ..
생성자(constructor) 클래스의 생성자를 설정하는 데에는 다양한 방법이 있다. 아래처럼 주 생성자를 설정하는 방법이 가장 대표적이라고 할 수 있겠다. class Dog(val name: String, val age: Int) 하지만 여러 종류의 생성자가 필요한 경우도 있다. 이를테면 name, age 중 일부만 가지고 생성하고 싶다면 이렇게 쓸 수 있을 것이다. class Person { private var name: String = "" private var age: Int = 0 constructor() constructor(name: String) { this.name = name } constructor(name: String, age: Int) { this.name = name this..
클래스, 메소드, 프로퍼티 Kotlin으로 개발을 하다 보면 클래스와 메소드, 프로퍼티를 자주 사용하게 된다. 아래는 Dog라는 객체를 클래스르 만들어 활용하는 대표적인 예시이다. class Dog(var name: String){ // 클래스 fun bark() = println("멍!") // 메소드 } var happy = Dog("Happy") happy.bark() // Dog.bark() 메소드 호출 여기에 새로운 메소드를 추가하고 싶다면, 간단하게 클래스 안에 새로운 메소드를 추가하면 된다. class Dog(var name: String){ fun bark() = println("멍!") fun whine() = println("끼잉...") // 새로운 메소드 } 직접 수정할 수 없는 클..
가변적인 파라미터 개수: vararg를 사용하지 않는다면 함수를 사용하다 보면 파라미터로 몇 개의 인자를 받게 될지 정확하게 정할 수 없는 경우가 있다. 또는, 처음에 설계했던 구조의 파라미터 개수만으로 원하는 조건을 만족시킬 수 없는 경우가 있다. 예를 들어 아래 코드는 "입력값: A"라는 문자열을 출력한다. fun main(){ printData("입력값", "A") } fun printData(name: String, value: String){ val result = "$name: $value" println(result) } 그런데, printData함수를 printData("입력값", "A", "B")와 같이 입력해서 "입력값: AB"도 출력하고 싶어졌다면? 첫 번째 방법: 함수 오버라이딩하기..
코드를 뜯어보고 싶어요 안드로이드 개발을 조금 하다 보면 같은 기능을 하는 코드이더라도 여러가지 방법으로 전개가 가능한 경우가 많다. 특히 자바에서 코틀린으로 넘어오면서 느낀 점 중 하나가 정말 다양한 방식의 코드를 간결한 문법으로 지원해준다는 점이다. 이건 코틀린의 큰 장점이지만, 공부를 하는 입장에서는 간혹 코드만 봐서는 성능 상에 어떤 차이가 있는지 알 수 없을 때가 있다. 'Kotlin의 이 문법은 Java에서는 어떤 방식으로 전개되는 거지?' '이 함수를 여기에 정의하면 전역 static으로 정의되는 건가?' 'Null-check를 이렇게 간결하게 하면 실제로는 어떤 방식으로 체크하는 걸까?' 등등의 의문은 Kotlin 코드를 좀 더 명확하게 표시된 Java 코드의 형태로 바꾸어 보는 것으로 해..
Null-check Kotlin을 이용해 개발하다 보면 nullable한 값을 처리해야 할 일이 잦다. x가 확실히 non-null이라는 것을 가정할 경우에는 x!!로 활용하여 null이면 exception(NPE, Null-Pointer Exception)이 나도록 하기도 하고, 반대로 null일때도 다른 값으로 활용하고 싶다면 x?:0과 같이 null일 때 대신 사용할 값을 정해 주기도 한다. 하지만 '어떤 값이 null이 아닐 경우에만' 특정 기능을 실행하고 싶을 때도 많다. 예를 들면 '저장된 이름이 null이 아닌 경우에만 인삿말을 출력한다'와 같은 상황. 일반적으로 이렇게 어떤 값이 null인지 아닌지 확실하지 않는 경우, 이를 체크하기 위해 아래처럼 사용하곤 한다. if (name != nu..