Java에서 Kotlin으로: 이 클래스를 어떻게 다시 작성하시겠습니까?
Source: Dev.to
이 클래스가 하는 일 이해하기
Kotlin으로 넘어가기 전에, 이 Java 클래스가 실제로 무엇을 포함하고 있는지 살펴보겠습니다:
- 생성자를 통해 설정되는 두 개의 private 필드(
codigo와nome) - 기본값을 가진 두 개의 private 필드(
numero = 0및texto = "EscolaX")
codigo와 nome을 매개변수로 받는 생성자가 this를 사용해 값을 할당합니다.
1단계: 클래스 선언
Java
public class AlunoJava { ... }
Kotlin
클래스는 기본적으로 public이므로 public 키워드를 사용할 필요가 없습니다:
class AlunoKotlin { ... }
✅ public이 필요 없습니다 — 처음부터 보일러플레이트가 줄어듭니다.
2단계: 생성자
Java 생성자
public AlunoJava(String codigo, String nome) {
this.codigo = codigo;
this.nome = nome;
}
Kotlin 기본 생성자(클래스 헤더에 선언). val이나 var를 추가하면 필드가 자동으로 생성됩니다:
class AlunoKotlin(private val nome: String, private val codigo: String) {
// nome과 codigo가 여기서 이미 선언·할당되었습니다!
}
✅ 생성자 선언, 필드 선언, 할당이 한 줄에 모두 이루어집니다.
3단계: val vs var
val→ 불변(Java의final과 유사) — 초기화 후 값을 재할당할 수 없습니다.var→ 가변 — 나중에 값을 변경할 수 있습니다.
원래 Java 클래스가 codigo나 nome을 생성 후 재할당하지 않으므로, val이 더 충실하고 관용적인 번역입니다.
4단계: 기본값을 가진 필드
Java 필드
private int numero = 0;
private String texto = "EscolaX";
Kotlin 대응(타입 추론 적용):
private var numero = 0 // Int로 추론
private var texto = "EscolaX" // String으로 추론
✅ 여기서는 var를 사용합니다. 해당 필드들은 나중에 변경될 수 있기 때문이며(Java에서 final이 아니었습니다).
최종 결과
모두 합치면 다음과 같습니다:
class AlunoKotlin(private val nome: String, private val codigo: String) {
private var numero = 0
private var texto = "EscolaX"
}
나란히 비교
Java (17줄)
public class AlunoJava {
private String codigo;
private String nome;
private int numero = 0;
private String texto = "EscolaX";
public AlunoJava(String codigo, String nome) {
this.codigo = codigo;
this.nome = nome;
}
}
Kotlin (3줄)
class AlunoKotlin(private val nome: String, private val codigo: String) {
private var numero = 0
private var texto = "EscolaX"
}
동일한 동작. 코드 양은 훨씬 적습니다. 🎯
핵심 정리
| Java 개념 | Kotlin 대응 |
|---|---|
public class | class (기본적으로 public) |
| 별도 생성자 블록 | 클래스 헤더에 있는 기본 생성자 |
this.x = x 할당 | 생성자 매개변수에 val/var 사용 |
private String x | private val x: String |
이름 앞에 타입 (String x) | 이름 뒤에 타입 (x: String) |
final 필드 | val |
| 가변 필드 | var |
결론
Kotlin은 Java의 보일러플레이트를 없애면서도 명확성을 유지하도록 설계되었습니다. 기본 생성자 문법과 val/var 구분에 익숙해지면, 대부분의 간단한 Java 클래스는 자연스럽게 Kotlin으로 변환될 수 있으며 코드 길이도 크게 줄어듭니다.