Kotlin 은 정적 변수 와 정적 방법 을 사용 하여 상세 하 게 설명 합 니 다.

머리말
일상적인 개발 과정 에서 정적 변수 와  정적 방법 은 우리 가 흔히 볼 수 있 는 용법 입 니 다.자바 에 서 는 여러분 이 낯 설 지 않다 고 믿 습 니 다.그러면 Kotlin 에서 어떻게 사용 해 야 합 니까?
사실은 매우 간단 합 니 다.하나의 변수 와 방법 을 copanion object 필드 에 포함 시 키 면 됩 니 다.예 를 들 어 다음 과 같 습 니 다.

class Constant {
 companion object {
  //      
  const val BASE_URL = "http://xxxx.xxx.xxx/"
  //   
  const val UMENG_APP_KEY = "xxxxxxxxxx"
  const val UMENG_CHANNEL = "umeng"
  //   
  const val WEIBO_APP_KEY = "xxxxxxxx"
  const val WEIBO_SECRET = "xxxxxxxxxx"
  
  
  fun getVideoFactor(){
   // do some work
  }
 }

}
보니까 쉽 지 않 아 요?순수한 kotlin 코드 에서 직접 이렇게 사용 할 수 있 습 니 다:

//       APIKey
  PlatformConfig.setWeixin(Constant.WECHAT_APP_ID, Constant.WECHAT_APP_SECRET)
  PlatformConfig.setSinaWeibo(Constant.WEIBO_APP_KEY, Constant.WEIBO_SECRET, Constant.WEIBO_AUTH_RETURN_URL)
그러나 만약 에 우리 가 자바 와 kotlin 을 혼합 개발 하 는 것 을 사용한다 면 자바 코드 에서 Constant.정적 변수의 방식 으로 정적 변수 나 방법 을 사용 할 수 없고 다음 과 같은 방식 으로 사용 할 수 없습니다.

//       APIKey
  PlatformConfig.setWeixin(Constant.Companion.WECHAT_APP_ID, Constant.WECHAT_APP_SECRET)
  PlatformConfig.setSinaWeibo(Constant.Companion.WEIBO_APP_KEY, Constant.WEIBO_SECRET, Constant.WEIBO_AUTH_RETURN_URL)
만약 우리 가 kotlin 처럼 클래스 이름 을 통 해 직접 사용 하고 싶다 면,정적 변 수 는?우 리 는 주석@JvmField 와@JvmStatic 를 통 해 정적 변수 와 정적 방법 을 각각 표시 할 수 있 습 니 다.그 후에 저 는 자바 코드 에서 예전 처럼 정적 인 구성원 을 직접 사용 할 수 있 습 니 다!
예 를 들 어 다음 과 같다.

/**
 * @author moosphon on 2018/12/12
 * desc:         
 */
class ExceptionHandler {


 companion object {
  @JvmField
  var errorCode = NetRequestStatus.UNKNOWN_ERROR

  @JvmField
  var errorMessage = "    ,     "

  @JvmStatic
  fun handleException(e : Throwable): String{
   e.printStackTrace()
   when(e){
    is SocketException -> {
     Logger.e("ExceptionHandler", "      : " + e.message)
     errorCode = NetRequestStatus.NETWORK_ERROR
     errorMessage = "      "
    }

    is JsonParseException -> {
     Logger.e("ExceptionHandler", "      : " + e.message)
     errorCode = NetRequestStatus.PARSE_ERROR
     errorMessage = "      "
    }

    else -> {
     try {
      Logger.e("ExceptionHandler", "    : " + e.message)
     } catch (e1: Exception) {
      Logger.e("ExceptionHandler", "    : " + e.message)
     }

     errorCode = NetRequestStatus.UNKNOWN_ERROR
     errorMessage = "    ,          ~"
    }
   }
   return errorMessage
  }
 }
}
그동안 바 빴 던 만큼 앞으로 도 계속 코 틀 린 쪽 글 을 올 려 드릴 예정 이 니 기대 해 보 세 요.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기