Java에서 Kotlin으로 마이그레이션하기 위한 팁

15389 단어 javakotlin
만약 자바로 소프트웨어를 개발하고 Kotlin 학습에 관심이 있다면, 특히 안드로이드에 대해 알고 있다면, Kotlin 코드를 찾아보았을 것이다.
언어의 유사점을 제외하고는 곤혹스러울 만한 차이가 거의 없지만, 나를 믿어라. 그것들은 우리를 도우러 온 것이다.
그러므로 저는 본문을 이용하여 Kotlin과 Java 간의 차이를 공유하고 Kotlin을 원하는 사람들을 중점적으로 소개할 것입니다. 관심이 있습니까?자, 시작합시다.

This article is a translation of the article written in brazilian portuguese. .



함수만 사용하여 프로그램 실행
Java 코드를 작성하고 실행할 때 첫 번째 영향을 미칩니다.
class Main {

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }

}
프로그램이 메시지 하나만 인쇄해도 주요 방법은 매우 지루합니다.
Kotlin의 경우 다음과 같은 여러 가지 방법이 있습니다.
fun main() {
    println("Hello World!")
}
바로 이렇다. 이 코드는 우리의 Hello World! 를 실행하기에 충분하다.

A valid note: we don't need the ; on final of statement, it's optional and unnecessary.



변수 선언 및 유형
Kotlin에서 변수를 선언할 때 변수의 가변 여부를 결정해야 합니다. 즉, var 가변 및 val 가변 여부를 결정해야 합니다.
var name = "Alex"
name = "Alex Felipe"
val age = 26
age = 26 // doesn't compile
이것은 내가 Kotlin을 가장 좋아하는 곳 중의 하나이다. 왜냐하면 final 자바 방법을 사용하는 것보다 코드 라이브러리에서 불변성을 유지하는 노력이 훨씬 적기 때문이다.
변수 유형을 설명할 필요가 없다는 점도 주의해야 한다.

"Does this mean that variables are dynamically-typed?"


자바와 마찬가지로 Kotlin은 정적 형식입니다. 다시 말하면 변수가 값을 받았을 때, 변수가 명시적인 성명 형식이 없어도 은밀하게 형식을 설정합니다.
따라서 다음 코드는 컴파일할 수 없습니다.
var name = "Alex"
name = 10 // doesn't compile
만약 네가 명확한 코드를 쓰는 것을 좋아한다면 슬퍼하지 마라.Kotlin에서는 변수 유형을 선언할 수도 있습니다.
var name: String = "Alex"
name = "Alex Felipe"
val age: Int = 26
age = 26 // doesn't compile

객체 작성
대상방향 언어를 사용할 때 대상을 만드는 수요는 자연스러우며 자바에서 우리는 new를 사용하여 대상을 만들어야 한다.하지만 Kotlin thenew는 심지어 하나의 키워드도 아니다!

"So how do we create a Kotlin object?"


이 Java 클래스를 고려하면:
class Person {
    private String name;
    private int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
Kotlin을 사용하여 다음과 같은 방법으로 객체를 작성할 수 있습니다.
val alex = Person("Alex", 26)
val fran = new Person("Fran", 25) // doesn't compile

This means that variables with the name new can be compiled on Kotlin.



속성이 아니라 속성
Kotlin은 인스턴스 생성의 차이점 외에도 클래스 선언을 변경했습니다.이 Person 클래스 예시에서 우리는 nameage 속성을 가지고 대상 상태를 저장한다.
이런 방법은 자바와 몇 가지 OO 언어에서 너무 흔하다.그러나 Kotlin에서, 우리는 속성을 성명하는 것이지, 속성을 성명하는 것이 아닙니다!

"But what's the difference between attribute and a property?"


주요 차이점은 속성에 접근하는 방법에 있다.속성을 사용할 때 읽기 또는 쓰기 위한 Getter 및 setter에 액세스하는 것이 좋습니다.
class Person {
    private String name;
    private int age;

    Person(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;
    }
}
이런 방식을 통해 우리는 가능한 필터가 없는 상황에서 클래스에 대해 직접 속성 조작을 하는 것을 피할 수 있다.
속성의 경우 이 동작이 기본 동작입니다.
class Person {
    var name: String
    var age: Int

    constructor(name: String, age: Int){
        this.name = name
        this.age = age
    }
}

Kotlin has more than one constructor, the primary and secondary. In this implementation I used the secondary, but the primary is the most common.


다시 말하면, 우리가 Kotlin 클래스에서 name 또는 age 를 방문했을 때, 실제로는 setter와 Getter를 방문하고 있었다.훨씬 쉬워졌죠?
또한 Java에서 Kotlin 속성에 액세스하려고 하면 setter와 Getter만 표시됩니다.😁

속성 수정setget이런 차이는 처음에는 이상하게 들릴 수도 있지만 더 정확히 말하면 우리는 속성의 접근 방법을 설명할 수 있다.
class Person {
    var name: String
    set(value) {
        field = value
        println("Setting the name $value")
    }
    get() {
        println("Getting the name $field")
        return field
    }
    var age: Int

    constructor(name: String, age: Int){
        this.name = name
        this.age = age
    }
}
다음 예제 코드를 실행합니다.
val alex = Person("Alex", 26)
alex.name = "Alex Felipe"
println(alex.name)
우리는 다음과 같은 결과를 얻었다.
Setting the name Alex
Setting the name Alex Felipe
Getting the name Alex Felipe
Alex Felipe
클래스 자체라도 대상 구조 기간에 속성의setter에 직접 접근할 수 있음을 주의하세요!
주의해야 할 또 다른 점은 setget의 내부에서 우리는 field를 사용하여 속성 값을 분배하고 얻는다. 즉, field는 진실한 속성을 표시하고 속성 범위에만 접근할 수 있다는 것이다!
따라서 우리가 field값을 수정하지 않으면 부동산 생산액은 바뀌지 않는다.
set(value) {
    println("Setting the name $value")
}
동일한 테스트를 통해 다음과 같은 결과를 얻었습니다.
Setting the name Alex
Setting the name Alex Felipe
Getting the name null
null

템플릿String코틀린에 대한 또 다른 일은 어떻게 연결하는가String.
우리는 모든 내용을 "" 아래에 놓고 + 연산자를 사용하지 않는다는 것을 주의하십시오.
이런 기술은 Template String 라고 불리며 다른 언어에서도 문자열 삽입값이라고 불린다.
기본적으로 템플릿String을 통해 우리는 String에 코드를 삽입할 수 있다. 한 값만 읽거나 되돌아오는 값의 문장을 실행할 수 있다.
println("1 + 2 = ${1 + 2}")
이 경우 우리는 모든 코드를 {}에 넣고 다음과 같은 결과를 얻어야 한다.
1 + 2 = 3
이 규칙은 객체의 멤버에 액세스할 때도 필요합니다.
println("My name is ${alex.name}")

결론
본고에서 소개한 기교 외에 Kotlin은 자바와 비교되는 많은 다른 특성과 차이점을 제공했다.그것들 중 대다수는 우리가 더 적은 코드를 작성하고 읽으며 더 많은 결과를 얻을 수 있도록 돕기 위해서이다.
너는 이런 팁들을 좋아하니?만약 그렇다면, 당신이 좋아하는 것을 남기고, 평론을 발표하고, 이 글을 공유해 주십시오.😉

좋은 웹페이지 즐겨찾기