Kotlin使用静态变量与静态方法详解

 更新时间:2018年12月13日 08:42:16   作者:水月沐風  
kotlin定义静态变量、方法可以采用伴生对象companion object的方式。 下面这篇文章主要给大家介绍了关于Kotlin使用静态变量与静态方法的相关资料,需要的朋友可以参考下

前言

在日常开发过程中,静态变量和  静态方法 是我们常见的用法,Java中相信大家并不陌生了,那么在 Kotlin 中该如何使用呢?

其实很简单,只需要一个将变量和方法包含在 companion 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)

然而,如果我们使用的是Java和kotlin混合开发,在Java代码中就无法通过 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 来分别标注静态变量和静态方法,之后我就能在Java代码中像以前方式那样直接使用静态的成员啦!

例如这样:

/**
 * @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
  }
 }
}

前段时间比较忙,之后会继续为大家带来kotlin方面的文章,大家拭目以待。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Android画图并保存图片的具体实现代码

    Android画图并保存图片的具体实现代码

    这篇文章介绍了在Android中画图并保存图片的实例,以下是具体的实现方法,有需要的朋友可以参考一下
    2013-07-07
  • Android协程的7个重要知识点汇总

    Android协程的7个重要知识点汇总

    在现代Android应用开发中,协程(Coroutine)已经成为一种不可或缺的技术,它不仅简化了异步编程,还提供了许多强大的工具和功能,可以在高阶场景中发挥出色的表现,本文将深入探讨Coroutine重要知识点,帮助开发者更好地利用Coroutine来构建高效的Android应用
    2023-09-09
  • Android实现登录界面的注册功能

    Android实现登录界面的注册功能

    这篇文章主要为大家详细介绍了Android实现登录界面的注册功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Flutter 实现整个App变为灰色的方法示例

    Flutter 实现整个App变为灰色的方法示例

    这篇文章主要介绍了Flutter 实现整个App变为灰色的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Android日期选择控件使用详解

    Android日期选择控件使用详解

    这篇文章主要为大家详细介绍了Android日期选择控件的使用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • Android使用WebSocket实现多人游戏

    Android使用WebSocket实现多人游戏

    WebSocket 是 HTML5 一种新的协议。实现了浏览器与服务器全双工通信,下面通过本文给大家分享Android使用WebSocket实现多人游戏,需要的朋友参考下吧
    2017-11-11
  • Android APP启动时间优化介绍

    Android APP启动时间优化介绍

    大家好,本篇文章主要讲的是Android APP启动时间优化介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Android Studio 合并module到统一文件夹的方法

    Android Studio 合并module到统一文件夹的方法

    这篇文章主要介绍了Android Studio 合并module到统一文件夹的方法,补充介绍了android studio关于同名资源文件的合并技巧,需要的朋友可以参考下
    2018-04-04
  • 关于ADB的Android Debug Bridge(安卓调试桥)那些事

    关于ADB的Android Debug Bridge(安卓调试桥)那些事

    这篇文章主要介绍了关于ADB的Android Debug Bridge(安卓调试桥)那些事,需要的朋友可以参考下
    2019-10-10
  • Android入门之IntentService的使用教程详解

    Android入门之IntentService的使用教程详解

    IntentService的生命周期中有一个非常好的方法-onHandleIntent方法,它是一个abstract方法,开发者在实现IntentService时可以覆盖它来处理“长事务”。本文就来聊聊IntentService的使用,需要的可以参考一下
    2022-12-12

最新评论