Kotlin使用静态变量与静态方法详解
作者:水月沐風 发布时间:2021-10-11 07:03:40
标签: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方面的文章,大家拭目以待。
来源:https://www.jianshu.com/p/03b21e3cf9cf
0
投稿
猜你喜欢
- 一.显示、隐藏 jQuery 中显示方法为:.show(),隐藏方法为:.hide()。在无参数的时候,只是硬性的显示内容和隐藏内
- 开发过程中,如果使用mybatis做为ORM框架,经常需要打印出完整的sql语句以及执行的结果做为参考。虽然mybatis结合日志框架可以做
- 如何快速构建一个Spring Boot的项目工具 ideaJDK版本 1.8Spring Boot 版本 1.5.9环境搭建实现:最基础前端
- C#判断数据类型的简单示例代码:int i = 5; Console
- 本文实例讲述了C#实现winform中RichTextBox在指定光标位置插入图片的方法。分享给大家供大家参考,具体如下://获取RichT
- socket 编程时的发送与接收数据时的问题在编写一个测试方法时,需要用启动一个程序监听一个端口,测试发送的数据是事正常,但是总是出现两个问
- java 中二分法查找的应用实例二分查找的前提是:数组有序 注意:mid的动态变化,否则出错!!! 实例代码:publ
- 绪论转眼间,2016伴随着互联网寒冬和帝都的雾霾马上就过去了,不知道大家今年一整年过得怎么样?最近票圈被各个城市的雾霾刷屏,内心难免会动荡,
- 算法中递归的一个典型应用就是遍历目标文件夹,并把该文件夹下的所有文件和文件夹打印或显示出来,还可以递归计算出目标文件夹的总大小。本文即以实例
- 前言在框架中经常会会用到method.invoke()方法,用来执行某个的对象的目标方法。以前写代码用到反射时,总是获取先获取Method,
- 1.查找数据库中表的列名<pre name="code" class="html">St
- startActivityForResult与startActivity的不同之处在于:1、startActivity( )仅仅是跳转到目标
- RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RP
- 序言for循环语句是java循环语句中最常用的循环语句,一般用在循环次数已知的情况下使用。for循环语句的语法格式如下:java语言 for
- 1. 选择恰当的日志级别常见的日志级别有5种,分别是error、warn、info、debug、trace。日常开发中,我们需要选择恰当的日
- 本文实例讲述了C#获取网页源代码的方法。分享给大家供大家参考。具体如下:public string GetPageHTML(string u
- 一、QQ邮箱打开POP3/SMTP服务上面的服务开启后,会得到一串授权密码在springboot配置中需要用到二、springboot配置I
- 本文实例讲述了Java定义泛型方法。分享给大家供大家参考,具体如下:一 点睛1 如果定义类、接口是没有使用类型形参,但定义方法时想自己定义类
- 前言在最近的一个项目需要用JAVA来解析DICOM图片,DICOM被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共
- 1. 安装JDK解释: JDK是Java编写环境--开发环境注: 安装路径不可出现中文及标点符号。比如:D:\Java\jdk81.1 下载