Kotlin์ val vs var
๐ง Declaring properties
์์ฑ์ ์ ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ด 2๊ฐ์ ํค์๋๊ฐ ์์ต๋๋ค.
๋ฐ๋ก var
์ val
์ธ๋ฐ์.
๋๊ฐ์ ํค์๋๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
๐ val
// kotlin
class Person() {
val name = "marco"
}
// java
public final class Person {
@NotNull
private final String name = "marco";
@NotNull
public final String getName() {
return this.name;
}
}
์ ์ฝ๋์์ kotlin๊ณผ java์์์ ๊ฐ์ ๋ณด๋ฉด val์ ๋ถ๋ณ(immutable)์ด๋ผ๋ ๊ฒ์ ๋ณผ์ ์์ผ๋ฉฐ, getter๋ง ์์ฑ๋๋ ๊ฒ์ ๋ณผ์ ์์ต๋๋ค๋ค.
๐ฐ var
// kotlin
class Person() {
var name = "marco"
}
// java
public final class Person {
private String name = "marco";
public final String getName() {
return this.name;
}
public final String setName(String name) {
this.name = name;
}
}
๊ฐ๋ณ(mutable)์ด๊ธฐ ๋๋ฌธ์ getter, setter๊ฐ ๋ชจ๋ ์์ฑ๋ฉ๋๋ค.
๐ ๊ณตํต์
is-๊ฐ ๋ถ์ผ๋ฉด is๋ฅผ ์ ๊ฑฐํ ์ด๋ฆ์ผ๋ก getter, setter๊ฐ ๋ง๋ค์ด ์ง๋๋ค.
// kotlin class Person() { val name = "marco" val isStudent = false } // java public final class Person { @NotNull private final String name = "marco"; private boolean isStudent; @NotNull public final String getName() { return this.name; } public final boolean isStudent() { return this.isStudent; } public final void setStudent(boolean isStudnet) { this.isStudent = isStudent; } }
private ๋ณ์๋ getter / setter๊ฐ ์์ฑ๋์ง ์์ต๋๋ค.
์ปค์คํ getter, setter๋ฅผ ๋ง๋ค์ ์์ต๋๋ค.
// kotlin class Person() { var name = "marco" get() = this.name + " Kim" set(value) { if(value.length >= 0) this.name = value } } // java public final class Person { private String name = "marco"; public final String getName() { return this.name + " Kim"; } public final String setName(String name) { if(value.length >= 0 { this.name = name; } } }
์ปดํ์ผ๋ฌ๊ฐ ๋ณ์ ํ์ ์ ์ถ๋ก ํ ์ ์์ต๋๋ค.
๊ฐ๋ณ์ธ ๊ฒฝ์ฐ ์ฃผ์์ ์ ์ฒ์ ์ด๊ธฐํ๋ฅผ ํ ๋ค์ ๋ค๋ฅธ ํ์ ์ ๊ฐ์ ๋ฃ์ ์ ์์ต๋๋ค. ์๋ฅผ๋ค์ด String ํ์ ์ ๋ฃ์๋ค๊ฐ, int ํ์ ์ ๋ฃ์ผ๋ฉด Type mismatch Error๊ฐ ๋ฐ์ํฉ๋๋ค.
'Backend > Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์ ํธ์ Kotlin์ ์ปจ๋ฒค์ ์ ์งํค๊ธฐ ์ํด Ktlint๋ฅผ ์ฌ์ฉํด๋ณด๊ธฐ. (2) | 2023.12.03 |
---|---|
kotlin 1.9.0 ์ธ์ด ์ ๋ฐ์ดํธ (0) | 2023.09.09 |