# 02 썸네일형 리스트형 [Kotlin] Architecture 어떠한 구조를 선택하는 게 좋은가? - 깔끔한 코드 분리가 가능한가?- Testing 가능한 구조를 만들 수 있는가?- View와 Model 간의 관계를 분리할 수 있는가?- 많은 코드를 손대지 않고, 유지 보수 가능한가? 안드로이드에 잘 맞는 Architecture는? class MainActivity : AppCompatActivity() { override fun onCreate (savedInstanceState : Bundle? ) {// ex) 업데이트 버튼val fab = findViewById(R.id.fab) as FloatingActionButtonfab.setOnClickListener {// 데이터 갱신 요청// Model에 접근해서 최신 데이터를 요청// ex) fun getIte.. [Kotlin] SAM Class SAM conversions - Single Abstract Methods- lambdas 식을 제공- Java에서 정의해야 함 - interface/abstract - Single Abstract Methods - setter 정의 // Interface는 아래와 같습니다.public interface OnClickListener {void onClick (View var1);} // setOnClickListener을 아래와 같이 구현되어 있습니다.public void setOnClickListener(View.OnClickListener 1) {throw new RuntimeException("Stub!");} SAM은 언제 동작할까? - setter와 추상 클래스 모두가 java 파일로 정의되어야.. [Kotlin] Generics Generics - 가장 흔하게 볼 수 있는 Generics 정의는 List이다. - List- Generics은 안에 타입 파라미터 정의 > javainterface Generic {void setItem (T item);} > kotlininterface Generic {fun setItem (item : T);} > kotlin 구현class Sample : Generic {override fun setItem(item : Generics type 정의) {// 구현}} 예제)interface Generic {fun setItem(item : T)} class Sample : Generic {override fun setItem (item : String) {// 구현}} @Testfun test(.. [Kotlin] 유용한 kotiln Standard 라이브러리 let- data의 null 체크를 할 때 주로 사용 val name : String? = ""name?.let {println("name $it length ${it.length}")} -> 예제fun test() {val name : String? = ""name?.let {println("name $it length ${it.length}") } ?: let {println("null")}} Calls the specified function [block] with this value as its argument and returns its result. public inline fun T.let(block : (T) -> R) : R = block(this) apply- 생성과 동시에 값을 초기화.. [Kotlin] Higher-Order Functions Higher-Order Functions - 함수를 파라미터로 전달하거나, 함수를 리턴 가능- lambda를 통해 축약 형태로 제공- 변수로 함수를 가질 수 있다. Higher-Order Functions 샘플 fun lock(lock : Lock, body : () -> T) : T {lock.lock()try {return body()}finally {lock.unlock()]} /* fun body() : T {return T} */ - 파라미터 이름 : body- 정의 : () -> T Higher-Order Functions 사용하기 fun toBeSynchronized() = sharedResource.operation()val result = lock(lock, ::toBeSynchroniz.. [Kotlin] Class etc Data class - java public final class UserInfo {private String name;private int age; public UserInfo(String name, int age) {this.name = name;this.age = age;} public String getName() {return name;} public void setName(String name) {this.name = name;} public int getAge() {return age;} public void setAge(int age) {this.age = age;} public String toString() {return "UserInfo(name = " +this.name + ", a.. [Kotlin] Sealed Classes 다형성이란? - 부모 클래스를 상속받은 자식 클래스 - 자식 클래스는 부모 클래스로부터 접근할 수 있다. - 이때 자식 클래스는 모두 다른 행동을 할 수 있다. 다형성 - java class A {public void printA() {System.out.println("class A");}} class B extends A {@Overridepublic void printA() {super.printA(); // A 클래스의 printA 출력System.out.println("class B - printA");}} class C extends A {@Overridepublic void printA() {super.printA(); // A 클래스의 printA 출력System.out.println("c.. [Kotlin] Companion Object Companion Object - class 내에 정의할 수 있음- Java에서처럼 Class.TYPE 형태로 직접 접근 가능- static은 아님 -> class 내에 직접 접근을 위한 함수와 변수 정의class Sample {val name : String = "Name" companion object {val type : Int = 0 fun isTypeZero() : Boolean {return type == 0}}}자바에서는 Sample.companion.getType(), Sample.companion.isTypeZero() 로 접근 할 수 있다.코틀린에서는 Sample.type, Sample.isTypeZero() 로 직접 접근할 수 있다. interface와 함께 사용하기 interface.. 이전 1 ··· 59 60 61 62 63 64 65 ··· 86 다음