当前位置: 首页 > news >正文

国内免费的短视频素材网站公众号开发者权限怎么开

国内免费的短视频素材网站,公众号开发者权限怎么开,渭南做网站公司,中核集团为什么排央企第一名变量类型var 和 val 的核心区别:关键字含义能否重新赋值类似概念(Java)varvariable(可变变量)可以普通变量(无 final)valvalue(不可变变量)不可以被 final 修饰的变量var…

变量类型

varval 的核心区别:

关键字

含义

能否重新赋值

类似概念(Java)

var

variable(可变变量)

可以

普通变量(无 final

val

value(不可变变量)

不可以

final 修饰的变量

var声明的变量可以被修改

var age = 20
age = 21  // 合法,允许重新赋值

val 声明的变量不能修改:

val name = "Kotlin"
name = "Java"  // 编译报错!不允许重新赋值
  • val 声明的变量虽然不能重新赋值,但如果它是对象(如集合、类实例),对象内部的属性是可以修改的:

    val list = mutableListOf(1, 2, 3)
    list.add(4)  // 合法,修改的是对象内部数据,不是重新赋值变量
    // list = mutableListOf(5,6)  // 编译报错,不允许重新赋值变量本身

    Set 

    定义了一个私有不可变接受Int类型的Set对象ACTION_IDS_DEFAULT,setOf(...)是Kotlin 的集合创建函数,用于初始化一个不可变集合,括号中是具体的事件 ID(通常来自枚举的 id 属性)。

    private val ACTION_IDS_DEFAULT: Set<Int> = setOf(ActionTypeEnum.ACTION_START_CONNECTION.actionId,ActionTypeEnum.ACTION_STOP_SERVICE.actionId,ActionTypeEnum.ACTION_REFRESH_DATA.actionId,ActionTypeEnum.ACTION_CLEAR_CACHE.actionId,ActionTypeEnum.ACTION_UPDATE_SETTINGS.actionId,ActionTypeEnum.ACTION_SAVE_CONFIG.actionId,ActionTypeEnum.ACTION_RESET_DEVICE.actionId,ActionTypeEnum.ACTION_SYNC_STATUS.actionId
    )

    如何定义一个java的枚举类型:

    public enum EventIdEnum {// 事件类型枚举值,包含事件ID和事件描述两个成员变量EVENT_UPDATE_CONNECT_STATUS(1001, "连接状态更新事件"),EVENT_UPDATE_DEVICE_INFO(1002, "设备信息更新事件"),EVENT_UPDATE_SUPPORT_DESKTOP(1003, "桌面支持状态更新事件"),EVENT_UPDATE_HISTORY_DEVICE(1004, "历史设备列表更新事件"),EVENT_UPDATE_APP_LIST(1005, "应用列表更新事件"),EVENT_UPDATE_APP_INFO_CHANGED(1006, "应用信息变更事件"),EVENT_UPDATE_LINK_APP_SHOW_ALL_MENU(1007, "链接应用菜单显示事件"),EVENT_UPDATE_MEDIA_POSITION(1008, "媒体播放位置更新事件"),EVENT_UPDATE_MEDIA_STATUS(1009, "媒体播放状态更新事件"),EVENT_UPDATE_MEDIA_MODE(1010, "媒体模式更新事件"),EVENT_UPDATE_MEDIA_META_DATA(1011, "媒体元数据更新事件");// 事件ID字段private final int eventId;// 事件描述字段private final String description;// 包含两个参数的构造函数EventIdEnum(int eventId, String description) {this.eventId = eventId;this.description = description;}// 获取事件ID的方法public int getEventId() {return eventId;}// 获取事件描述的方法public String getDescription() {return description;}
    }

    构成一个java枚举类型的部分:
    成员变量,实现的类型,构造函数,get方法

    单例对象:

    kt可以使用object关键字直接定义一个单例对象,在别的函数中可以直接使用类名来获得这个对象,不需要定义getInstance函数来获取这个对象

    // 使用 object 关键字创建单例
    object AppConfig {// 单例中的成员变量var apiBaseUrl: String = "https://api.example.com"var timeout: Int = 30000 // 30秒// 单例中的方法fun init(baseUrl: String, timeout: Int) {this.apiBaseUrl = baseUrlthis.timeout = timeout}fun getFullUrl(endpoint: String): String {return "$apiBaseUrl/$endpoint"}
    }

    方法的重写

    使用override关键字

    override fun onReceivedPublishedData(packageName: String?, eventIdentifier: Int, dataBytes: ByteArray?
    ) {// 重写的方法实现逻辑// 可以调用父类实现(如果需要)
    }

    可以看出方法接受一个可以为空的String类型的packageName,Int 类型的eventIdentifier,可以为空的Byte类型数组(在上一节提过)

    ByteArray 是一个字节数组类型,用于存储原始的字节数据。它与 Java 中的 byte[] 是兼容的(可以直接互操作),常用于处理二进制数据,比如网络传输、文件读写、加密解密等场景。

    日志打印

     Logger.warning(TAG, "Data is null!")

    同java相似不赘述

    主线操作

    ThreadUtils.runOnMainThread { ... }:这是一个工具类方法,用于将代码块切换到主线程执行。

    // 将 eventId 替换为 currentEvent,类型仍为 EventIdEnum
    when (currentEvent) {EventIdEnum.EVENT_UPDATE_CONNECT_STATUS -> ThreadUtils.runOnMainThread {onConnectionStatusChanged(packageName, dataJson)}EventIdEnum.EVENT_UPDATE_DEVICE_INFO -> ThreadUtils.runOnMainThread {onDeviceInfoUpdated(packageName, dataJson)}EventIdEnum.EVENT_UPDATE_SUPPORT_DESKTOP -> ThreadUtils.runOnMainThread {onDesktopSupportChanged(packageName, dataJson)}EventIdEnum.EVENT_UPDATE_HISTORY_DEVICE -> ThreadUtils.runOnMainThread {onHistoryDeviceListUpdated(packageName, dataJson)}EventIdEnum.EVENT_UPDATE_APP_LIST -> ThreadUtils.runOnMainThread {onAppListUpdated(packageName, dataJson)}
    }

    什么操作需要放在主线程?

    涉及到更新UI页面的操作,这些调用的函数会引起UI界面的改变,所以需要放在主线程

    其他长时间且不直接涉及UI界面改变的可以放在子线程

    when语句

    when (it.dataCategory) {CategoryTypeConfig.TYPE_FIRST_SYSTEM -> {DataSourceConstants.SOURCE_PRIMARY_SYSTEM}CategoryTypeConfig.TYPE_SECONDARY_TOOL -> {DataSourceConstants.SOURCE_AUXILIARY_TOOL}CategoryTypeConfig.TYPE_THIRD_PARTY -> {DataSourceConstants.SOURCE_EXTERNAL_MODULE}else -> {DataSourceConstants.SOURCE_EXTERNAL_MODULE}
    }

    when语句这一段实际上返回的是一个变量,所以when语句可以这么写

    var data = when (it.dataCategory) {CategoryTypeConfig.TYPE_FIRST_SYSTEM -> {DataSourceConstants.SOURCE_PRIMARY_SYSTEM}CategoryTypeConfig.TYPE_SECONDARY_TOOL -> {DataSourceConstants.SOURCE_AUXILIARY_TOOL}CategoryTypeConfig.TYPE_THIRD_PARTY -> {DataSourceConstants.SOURCE_EXTERNAL_MODULE}else -> {DataSourceConstants.SOURCE_EXTERNAL_MODULE}
    }

    也可以把它作为一个参数传给一个函数

    callback.onProgress(when (it.itemType) {ItemTypeConfig.TYPE_STANDARD -> {ResourceType.SOURCE_STANDARD}ItemTypeConfig.TYPE_ENHANCED -> {ResourceType.SOURCE_ENHANCED}ItemTypeConfig.TYPE_PREMIUM -> {ResourceType.SOURCE_PREMIUM}else -> {ResourceType.SOURCE_PREMIUM}}, 100
    );

    lambda表达式放在下一章

    http://www.dtcms.com/a/506059.html

    相关文章:

  • 网页设计与网站建设实例教程答案乐清市龙翔网络工程公司
  • 常州微元宝网站建设云服务器是否可以做多个网站
  • 网站设计总结与心得体会公司内部网站怎么做
  • 周口网站建设公司济南网站建设cnwenhui
  • 如何在各个购物网站之间做差价设计网站官网狗
  • 网站建设职位要求国内免费域名申请
  • js模板网站广州有建网站的公司吗
  • 个人网站效果计算机网络技专业术网站开发
  • 1免费建站网站wordpress管理员密码被改
  • dw软件做网站帮忙做任务网站
  • 网站建设参考文献外文批量替换wordpress文章中的文字
  • 郑州区块链数字钱包网站开发周期怎么自己做网站卡扣
  • 苏州新区网站建设做导航网站不侵权吗
  • 遨游建站大连建设网网址
  • 网站的资讯内容学网站建设专业前景
  • 263网站建设怎么样网站建设以什么盈利
  • 滨海网站建设发免费广告电话号码
  • 三网合一网站建设合同网站开发注意问题
  • discuz做影视网站网络系统开发
  • 太原建站模板网站seo优化标题 关键词
  • 做网站前端需要懂得百度识图查另一半情头
  • 衣服商业网站建设策划书佛山o2o网站建设
  • 门户建设网站以营销型网站为主要营销方式的案例
  • 做网站需要什么电脑配置科技让生活更美好作文500字
  • 网站开发yuanmus西安百度百科
  • 中山网站上排名提高手机性能的黑科技软件
  • 做网站建设的价格wordpress原因跳转
  • 如何做网站对话框惠城发布最新通知
  • 抚顺网站网站建设那些网站可以做团购
  • 档案信息网站建设遵循什么原则1小时教你做出个人网页