[Kotlin] 코틀린에서 자바 변수 사용? 프로퍼티 의문점

2020. 6. 3. 13:42Android/Kotlin

혼자 공부하다가 찾고 기억을 위해 남기는거라서 틀릴 수 있습니다.

 

책을 보고 안드로이드 코틀린 공부를 하다가 

     

  location?.run{

                val latLng = LatLng(latitude,longitude)
                
            }

 

 

이라는 구문을 발견했는데 여기서 변수 latitude 와 longtitude가 어디서 나온것이며

어떻게 저렇게 사용할 수 있는지 의문점이 들어서 Location 클래스를 뒤져보았다.

    private double mLatitude = 0.0;
    private double mLongitude = 0.0;

 

  public double getLatitude() {
        return mLatitude;
    }

    /**
     * Set the latitude, in degrees.
     */
    public void setLatitude(double latitude) {
        mLatitude = latitude;
    }

위와 같이 변수와 getter setter를 볼 수 있었는데 진짜 큰 의문이 들었던것이 

변수이름은 mLatitude인데 어떻게 코틀린에서 latitude로 접근이 가능한걸까? 란 생각이 들었다.

이를 테스트 해보기 위하여 다른 클래스를 만든 후 변수 이름과 get,set메소드를 다르게 지정해도 코틀린에서는 get,set메소드 이름으로 사용이 가능한 것을 확인하였다. 프로퍼티와 관련이 있는 것 같은데 어떻게 된걸까?

 

 

일단 들어가기에 앞서

자바에서 변수 선언은 변수 선언을 의미하지만 코틀린에서는 프로퍼티 선언을 의미한다라는 문장을 찾았는데 이 문장을 해석해보고 들어가보도록 하자.

 

 

 

 

자바 변수선언 = 변수

코틀린 변수선언 = 프로퍼티 -> 프로퍼티란 ? -> 필드 + 접근자

 

여기서 필드 + 접근자라고 하면 자바로 치자면 변수를 의미하는 field와 getter,setter메소드를 의미하는것 같다.

 

그래서 코틀린에서 변수를 선언하면

var a

     get() 

     set() 

내부적으로 위와 같이 get() set() 접근자가 생기는것 같다 이를 이용해서 set,get도 직접 컨트롤해 줄 수 있는 모양이다.

 

 

자 여기서 열심히 구글링해서 찾은 아래 문장이 중요하다.

출처:https://medium.com/@kbm1378/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%84%B0%EB%94%94-10-properties-26d85c745c4c

 

코틀린 입문 스터디 (10) Properties

스터디파이 코틀린 입문 스터디 (https://studypie.co/ko/course/kotlin_beginner) 관련 자료입니다.

medium.com

 

 

Java는 properties를 언어적인 기능으로 지원하지는 않으며 JavaBeans 컨벤션에 따라 개발자가 getter/setter를 직접 구현하는 방식으로 사용할 수 있습니다. 한편, Kotlin은 properties를 기능으로써 지원하여 문법적으로 간결하게 사용할 수 있으며, 필요에 따라 커스터마이즈할 수 있습니다.

(관련 링크 : 위키피디아 — JavaBeans)

 

 

 

https://en.wikipedia.org/wiki/JavaBeans

 

JavaBeans - Wikipedia

In computing based on the Java Platform, JavaBeans are classes that encapsulate many objects into a single object (the bean). They are serializable, have a zero-argument constructor, and allow access to properties using getter and setter methods. The name

en.wikipedia.org

 

 

저걸 살펴보면 javaBeans에서는 properties를 setter, getter으로 설정하고 얻을 수 있다고 한다.

 

즉 내가 정리한거는 JavaBeans에서 properties를 제공(생성?)하는 방식이 get,set메소드를 통해서(연결?)이기 때문에

 

get,set메소드의 명칭을 기준으로 propertiey가 생성된다고 인식하였다...(맞는지는 모르겠다.)

 

그러므로 get,set메소드 명칭으로 생성된 propertiey를 코틀린에서 사용하니 

 

latitude와 같은 현상이 일어난것이라고 생각한다.

 

반응형