首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一次有趣 Kotlin 语法解析实践

想到了使用注解方式,对于业务方来说,他们只要按照注解需要 value 进行录入即可,可选参数用默认值代替,并且还可以注释提示,来看下注解定义: annotation class Component...既然有 java 文件解析,那一定就有 kotlin 文件解析,google 搜了下,查到了三个库: kotlin-parser[2] : 调研发现有点难用,无法根据注解方法回调遍历注解参数 kastree...[3]:遍历简单,可以拿到 Node 节点进行向下遍历 kotlinx.ast[4] :大而全 ast 解析库,适配规则非常多,但使用起来有点重 在简单了解和 demo 测试,决定使用 kastree...这个轻量级实现,在 README 描述,可以写个简单伪代码: // 读取 kt 文件内容 val code = File("xx/test.kt").readText() // 生成解析器...在我们解析拿到了内容之后,那接下来生成 json 文件就更简单了,我们只需给每个待解析 kt 文件创建个 JSONObject 节点,然后将解析到信息都 put 进去,如果有多个文件的话,则创建个

91130

Kotlin开发一些Tips

总的来说,这几种函数有许多重叠部分,因此可以根据开发具体情况来使用。以上仅做参考。 Sequence 我们经常会使用kotlin集合操作符,比如 map 和 filter 等。...2、数据量大时候,这样可以避免重复创建中间集合。这个数据量大,怎么也是万以上级别了。 所以对于一般Android开发来说,不使用Sequence其实差别不大。。。哈哈。。...我们需要使用try catch捕获异常或者使用throws抛出异常处理它。 但是Kotlin并不支持这个机制,也就是说不会强制你去处理抛出异常。...这里就不讨论各自优缺点了。 既然Kotlin没有这个机制已经是既成事实,那么我们在使用中就需要考虑它带来影响。...jsonObject.getString("id") ... } 在java我们需要处理JSONException,kotlin因为没有Checked Exception,如果我们像上面这样直接使用

52420
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin入门(31)JSON字符串解析

下面分别介绍这两个工具类用法: 1、JSONObject JSONObject常用方法如下所示: 构造函数 : 从指定字符串构造出一个JSONObject对象。...getJSONObject : 获取JSONArray数组对象在指定位置处JSONObject对象。 put : 往JSONArray数组对象添加一个JSONObject对象。...使用JSONObject和JSONArray对json串进行手工解析,处理过程比较常规,完成该功能Kotlin代码与Java代码大同小异。...下面直接给出Kotlin解析json串常用代码片段,包括如何构造json串、如何解析json串,以及如何遍历json串:     //构造json串     private val jsonStr...        while (it.hasNext()) { // 遍历JSONObject             var key = it.next().toString()

4K20

Kotlin开发一些Tips

2、数据量大时候,这样可以避免重复创建中间集合。这个数据量大,怎么也是万以上级别了。 所以对于一般Android开发来说,不使用Sequence其实差别不大。。。哈哈。。...所以对于JVM平台,kotlin协程只能是对Thread API封装,和我们用Executor类似。所以对于协程性能,个人也认为差别不大。...我们需要使用 try catch 捕获异常或者使用 throws 抛出异常处理它。 但是Kotlin并不支持这个机制,也就是说不会强制你去处理抛出异常。...这里就不讨论各自优缺点了。 既然Kotlin没有这个机制已经是既成事实,那么我们在使用中就需要考虑它带来影响。...jsonObject.getString("id") ... } 在java我们需要处理JSONException,kotlin因为没有Checked Exception,如果我们像上面这样直接使用

53120

kotlin打印出漂亮android日志写在最后

尝试kotlin封装了一个日志组件,用于android项目。 我们先来看下效果图,看看它是如何打印出日志 打印字符串日志.jpeg 打印json格式日志.jpeg 上面的日志格式是不是很酷?...kotlin在方法名前标注@JvmStatic,就表示该方法是静态。...(即扩展类函数, 可以在已有类添加新方法, 比继承更加简洁和优雅。)这个特性跟Objective-CCategory很类似。....jpeg 写在最后 kotlin是开发android不错选择,虽然不会很激进地完全使用kotlin替换原先java代码,但是一些常用工具类可能会有它来写,或者用它逐步替换原先工具类。...这个日志组件要是看得不过瘾,可以看看我写Android框架SAF里包含日志组件,功能更加丰富。

1.5K20

不要用Java语法思维来写Kotlin

()) 但kotlin字符串模版可以优雅这个事情: val site = "http://woquanke.com" println("博客名字叫《全科》,博客地址是:$site") 4...函数返回值可以是null 8.真的要习惯Koltinfor循环,太强大了 Kotlin没有Javafor(初始值;条件;增减步长)这个规则。...但是Kotlin对于for循环语句新增了其他规则,满足刚提到规则。...for循环提供迭代器用来遍历任何东西 for循环数组被编译为一个基于索引循环,它不会创建一个迭代器对象 新增规则,去满足for(初始值;条件;增减步长)这个规则 递增 关键字:until 范围:until...for循环数组被编译为一个基于索引循环,它不会创建一个迭代器对象 遍历字符串 此用法在数据类型章节字符串类型中用到过。还不甚清楚可以查看 Kotlin——最详细数据类型介绍。

3K40

Java 8之后那些新特性(二):文本块 Text Blocks

继续聊Java 8之后新特性,这周讲下Text Blocks这个特性。 Text Blocks最开始是个JDK 14引进,当时为预览版功能,在JDK 15被正式确定。...过往实现方式无非是以下两种: • 使用"\n","+"等方式来处理 • 不使用多行,整成一行来处理 举个实际例子来说明下: 通常在写REST层单元测试时,需要构建JSON字符串,比如在API请求,...Kotlin与TypeScript两种语言重写上面这个方法,这样大家就有直观感受了。...有一个建议需要重复一次,那就是: 对于任何语言或者框架,最先需要阅读文档一定是官网 在《追求高效程序员》这个系列,有一个章节专门说如何高效学习,也提及了这一点。...} 选择使用JsonObject构建JSON字符,至少相比起来,相对是一种也不算很差实现方式了吧。

1.3K30

写了多年Java,直到看到Kotlin,原来代码可以如此优雅!

()) 但kotlin字符串模版可以优雅这个事情: val site = "http://woquanke.com" println("博客名字叫《全科》,博客地址是:$site") 4...函数返回值可以是null 8.真的要习惯Koltinfor循环,太强大了 Kotlin没有Javafor(初始值;条件;增减步长)这个规则。...但是Kotlin对于for循环语句新增了其他规则,满足刚提到规则。...for循环提供迭代器用来遍历任何东西 for循环数组被编译为一个基于索引循环,它不会创建一个迭代器对象 新增规则,去满足for(初始值;条件;增减步长)这个规则 递增 关键字:until 范围...for循环数组被编译为一个基于索引循环,它不会创建一个迭代器对象 遍历字符串 此用法在数据类型章节字符串类型中用到过。还不甚清楚可以查看 Kotlin——最详细数据类型介绍。

3.3K40

一个实例学习Kotlin 开发 Android App 全过程(内有代码)

本文分享一款完整案例——欧瑞天气,希望通过这个项目,让读者了解利用 Kotlin 开发 Android App 全过程。...图2 显示天气情况 这款App使用前面章节介绍UI技术、网络技术,并且使用Kotlin语言编写。其中有一些Library使用了Java编写,实际上,这款App是Kotlin和Java结合体。...2 添加依赖 在App中使用了大量第三方Library,如gson、okhttp3、glide等,这些Library需要在app/build.gradle文件dependencies部分指定,...例如,地区列表是从服务端获取JSON数据,因此,需要有相应完成从网络上获取数据工作,而且获取是JSON格式数据。因此,在使用这些数据之前,需要先将其转换为Kotlin类。...以上内容实现了一个Android App,尽管这个App不算大,但完全可以演示使用Kotlin开发Android App完整过程。本章实现App综合使用了UI、Activity、布局、网络等技术。

4.4K50

一文回顾 Java 入门知识(

java 基本语法和规则,还要尝试理解面向对象思想。...执行说明与应用场景: if条件:单 if 语句或多个单 if 语句连续判断 这种情况都有,程序在处理某个条件是否满足一个或多个条件 if-else:单独使用或复杂条件嵌套使用场景,处理某种业务多重判断某个具体条件是否满足...这些内容同样是重点,尤其是for循环,实际开发几乎一直在用,大多数情况是结合后面要学 数组 和 集合 一起使用,推荐大家多练习几个案例,尤其要注意索引问题,避免越界异常发生。...数组 开发中用最多是一维数组,当然特殊岗位除外(比如:算法工程师)。重点掌握对数组动态赋值、根据索引取值以及遍历等操作。...方法 这块主要明白如何编写以及编写规则,方法之间调用和返回值,简单来讲,你会写各种方法即可,后面学了继承和多态,你就会对方法有更深入了解。 实际开发,代码都是通过方法完成

35510

Android Kotlin启程

前言 Android 官方已经推荐使用Kotlin 足以见Kotlin优秀 并且可以在原项目中直接用Kotlin 完全没有什么可担心 代码比Swift还好用 强烈推荐 推荐 kotlin...classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } 模块配置文件 dependencies {...new了 集合分类: Set(集) List(列表) Map(映射) 在Kotlin,明确区分了只读和可变集合 代码如下 前三个是只读 后三个是可变 var list = listOf<String...= JSONObject(json) var message = jsonObject.toString(LoggerPrinter.JSON_INDENT)...private:同一类或文件(针对包级别定义)可见 protected:同private 加子类可见 internal:在同一个模块可见(如果声明范围所有者是可见) public:公共,所有都可见

45110

阿里云大神亲码“Kotlin深度笔记”,不讲一句废话,全是精华

前言 Android相关火热技术最近几年也是频出,没事就在刷屏,来说说对这些火热技术看法。...Flutter,从知识半衰期来看,这个框架存在时间相对不会长,目前也就一些有技术储备公司去试验去尝试,如果自己公司技术储备不够,就贸然当小白鼠显然不是很明智。...可以相互调用,觉得kotlin解决不了地方,仍然可以使用Java编写(非常人性化) 如果你想要快速找到一份移动开发者工作,建议学习Kotlin进行原生Android开发。...定义常量与变量 null 声明 空判断 字符串拼接 三元表达式 多重条件 更灵活 case 语句 for 循环 更方便集合操作 遍历 方法定义 constructor 构造器 Get Set 构造器...image.png 走进 Kotlin 数组 Kotlin 数组创建技巧 Kotlin 数组遍历技巧 数组代码演练 走进 Kotlin 集合 集合可变性与不可变性 集合排序 集合 Set

1.1K10

【翻译】Kotlin致简代码之路

原文链接:Clean Code with Kotlin 因本人水平有限,翻译不好之处还请多包涵,文章 “ Clean Code ” 喜欢翻译成“致简代码”,但是这个名字书一般是被翻译成“整洁代码”...这仍然取决于开发者自己创建小函数。 然而,使用 Java 有时候很难写出小而富有表达力函数。让举个例子。假设我们需要把 HTTP 响应有效信息映射成一个对象并且能正确处理各种错误分类。...不可变引用 在 Kotlin ,我们应该一直使用 val 关键字定义一个变量。这会创建一个不可变变量。在 Java ,我们不得不额外添加 final 这个关键字(再次出现语法噪点!)。...现在,我们想要深入这个层级获取相应城市信息。这是一个很常见使用情形。然而,这个链条每个元素都有可能是空值,因此都是可空类型。...在这篇文章里,努力指出 Kotlin 中提供大量优秀特性让你们写出更加简洁代码。

1.4K30

含有泛型 JSON 反序列化问题

但是如果你使用 foreach 循环或者迭代器取 String 循环时会发生类型转换异常。...,可以看出底层使用 List 迭代器进行遍历,取出每个元素后强转为 String 类型,存储到局部变量表索引为 4 位置,然后进行打印。...循环底层使用迭代器遍历每个元素并强转为 User 类型是报类型转换异常。...将类型参数嵌入到匿名继承结构,即使运行时类型擦除也可以重建。 再回到 parseObject 函数,可以看到底层用就是这个 type。...遇到问题能够从更合理角度思考,了解问题本质。 学习一个问题可以尝试举一反三,活学活用。 希望本文对大家有帮助,创作不易,如果对你有帮助,欢迎关注,点赞。 您支持和鼓励是创作最大动力。

2.9K41

13.json解析

然后循环遍历这个 JSONArray,从中取出每一个元素都是一个 JSONObject 对象,每个 JSONObject 对象又会包含 id、name 和version这些数据。...= new JSONObject(json); // 解析info数组,解析括号括起来内容就表示一个数组,使用JSONArray对象解析 JSONArray array = jsonObject.getJSONArray...textView.setText(strBuf); } catch (Exception e) { textView.setText(e.getMessage()); } // 这个测试代码...,在设备上运行已经没有问题 // 注意一下你json格式,必须是大括号开头,所以我添了大括号,并且在前面加了一个“info”头 // 有什么问题可以追问 总结: 首先遇到{对象new jsinobj...,继续遍历,在循环中array.obj,obj.getstring 2.Gson  google + json 谷歌提供开源解析json框架 Gson gson = new Gson();

1.5K90

TS 真香系列:你应该知道核心功能

TypeScript 语言小组一直在以惊人速度推出新功能。...建议你切换到较旧版本(单击左上角版本下拉列表),查看较新版本是怎样处理以前不支持用例: 02 1.可选链 从 v3.7 可用 这是当你尝试访问嵌套数据时一个痛点,嵌套数据越多,代码就会变得越繁琐...在下面的例子,要访问 address,你必须遍历 data.customer.address,而且 data 或 customer 有可能是 undefined,所以通常使用 && 运算符或类似例子技巧遍历检查每个层次定义...现在有了新 --incremental 标志,你可以将其添加到 tsc(typescript 编译器)命令行这个命令行将会递增地编译修改过文件。...TypeScript 通过把自从上次编译以来项目信息保存在代码库内本地缓存目录实现这一目的。

2K40
领券