2017-09-25 4 views
2

몇 가지 상수를 정의하는 클래스를 갖는 java에서 일부는 내부 클래스에 있습니다.kotlin에서 여러 하위 집합을 일정하게 만드는 방법

Data.HTTP_SCHEME; 
Data.Constants.ResponseType.XML; 
Data.PayloadType.JSON 

방법 코 틀린에 동일한 작업을 수행하는 :

그들은라고도 할 수 있을까?

public class Data { 
public static final String HTTP_SCHEME = "http"; 
public static final String HTTPS_SCHEME = "https"; 

public static class Constants { 

    public static class ResponseType { 
     public static final String XML = "xml"; 
     public static final String JSON = "json"; 
    }   
    public static class PayloadType { 
     public static final String JSON = "json"; 
    } 

    public static class ItemDataType { 
     public static final String ID = "id"; 
     public static final String IS_GLOBAL = "isGlobal"; 
     public static final String IS_TRANSLATED = "isTranslated”; 
    } 
} 
} 

답변

2

:

object Data { 
    val HTTP_SCHEME = "http" 
    val HTTPS_SCHEME = "https" 
    class Constants { 
    object ResponseType { 
     val XML = "xml" 
     val JSON = "json" 
    } 
    object PayloadType { 
     val JSON = "json" 
    } 
    object ItemDataType { 
     val ID = "id" 
     val IS_GLOBAL = "isGlobal"; 
     val IS_TRANSLATED = "isTranslated”; 
    } 
    } 
} 

설명 :object 키워드 (자바처럼) 정적 클래스를 만드는 데 사용되는 코 틀린에

.

3

Java Kotlin과 달리 정적 변수는 없습니다. 대신 그들은 동반자 물체를 가지고있다. 모든 클래스에는 정적 값을 저장하는 데 사용할 수있는 컴패니언 개체가 함께 제공됩니다. 당신이 함께 그룹으로 정적 값을 원하는 경우에 당신이 당신의 동반자 개체 값은 당신이 그들에 주석을 달 수있는 자바 클래스 정적으로 노출 할 경우

class Constants { 

    companion object { 
     val HTTP_SCHEME = "http" 
     val HTTPS_SCHEME = "https" 
    } 
} 

fun main(args: Array<String>) { 
    println(Constants.HTTP_SCHEME) 
    println(Constants.HTTPS_SCHEME) 
} 

또는 비 동반자 객체

class Constants { 

    companion object { 
     var HTTP_SCHEME = "http" 
     var HTTPS_SCHEME = "https" 
    } 

    object ResponseType { 
     val XML = "xml" 
     val JSON = "json" 
    } 
    object PayloadType { 
     val JSON = "json" 
    } 

    object ItemDataType { 
     val ID = "id" 
     val IS_GLOBAL = "isGlobal" 
     val IS_TRANSLATED = "isTranslated" 
    } 

} 

fun main(args: Array<String>) { 
    println(Constants.ItemDataType.IS_TRANSLATED) 
    println(Constants.PayloadType.JSON) 
} 

를 만들 수 있습니다 @JvmStatic

class Constants { 

    companion object { 
     @JvmStatic var HTTP_SCHEME = "http" 
     @JvmStatic var HTTPS_SCHEME = "https" 
    } 
} 
1

그것은 꽤 쉽게, 당신은 다음과 같이 정의 할 수 있습니다

을 당신은 코드 아래 사용할 수 있습니다
class A{ 
    class ResponseType { 
     companion object { 
      val code = 100 // you can call: A.ResponseType.code in everywhere now 
     } 
    } 
}