DTOs(Data Transfer Object)(POJOs/POCOs) 생성하기
우선, kotlin을 사용하면 get set 메소드를 만들어줄 필요가 없습니다.
kotlin을 컴파일하면 java에서 자동으로 get set 메소드를 만들어 줍니다.
val var에 따라 get set 유무가 달라지며 val은 read-only로 get 함수만 만들어집니다.
java에서 Data 접근을 사용하는 방법은 2가지입니다.
public class Sample{
String name;
String email;
public Sample(String name,String email)
{
this.name = name;
this.email = email;
}
}
public 접근 지정자를 사용하여 메소드 없이 변수에 직접 접근
public class Sample{
private String name;
private String email;
public Sample(String name,String email)
{
this.name = name;
this.email = email;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
//email도 동일
}
private 접근 지정자를 사용하고 get set 메소드로 접근하는 방법이 있습니다.
private를 사용하여 캡슐화를 구현하는 것은 굉장히 중요한 방법이지만 get set 메소드를 선언하는 것은 상당히 귀찮은 일일수도 있습니다.
Kotlin의 Data Class 사용
kotlin에서는 Data 접근을 위한 data class를 제공해주고 있습니다.
data class Sample(var name,var email)
위와 같이 1줄로 선언해도 Java로 컴파일 될 시 set / get 메소드가 만들어져 있어 굉장히 편리합니다.
생성자를 통해 값을 초기화하는 것이 일반적이며 아래와 같은 방법으로도 선언이 가능합니다.
data class Sample(var name){
var email = " "
}
val 키워드로 변수를 선언하면 read-only로 자바로 컴파일할 시 get 메소드만 만들어집니다.
함수의 기본 값 정의
kotlin에서는 C++에서 사용했던 Default 매개변수를 사용할 수 있습니다.
fun Sample(val name,val email = "naver")
{
Log.d(TAG,"$name and $email")
}
Sample("jum","kakao")
Sample("nyang")
Kotlin Lambdas
kotlin에서는 Lambdas를 기본으로 제공해줍니다. java에서는 java8에서 이용이 가능합니다.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.setAlpha(0.5f);
}
});
button.setOnClickListener{ view->
view.setAlpha
}
For문에 filter 걸기
java에서 i>5 인경우 *2 해주는 코드
for(Integer n : list)
{
if(n>5){
n = 2;
Log.d(TAG,"number:"+n);
}
}
kotlin에서 filter를 사용하는 방법
list.filter{it>5}.map{Log.d(TAG,"number:${it*2}")}
java의 if문을 대신하여 filter를 사용할 수 있으며, filter의 결과값을 map에서 받아올 수 있다.
Map 출력
for((K,V) in map)
{
Log.d(TAG,"$K is $V")
}
class 확장 함수
Utils에서 사용하기에 좋은 기능인것 같다.
fun Int.multiply(x: Int): Int {
return this * x
}
1.multiply(5) // 출력 5
'Language > kotlin' 카테고리의 다른 글
[Kotlin] Enum의 새로운 values Function 등장, entries (0) | 2024.05.05 |
---|---|
[Kotlin] 데이터 표현을 위한 Data Object (0) | 2024.03.26 |
[Kotlin] Singleton (0) | 2020.06.01 |
Kotlin의 유용한 함수들 - let, apply, run, with (0) | 2020.02.10 |
[Kotlin] Kotlin을 왜 배워야 할까요? (0) | 2020.02.10 |