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

使用注解自动生成代码

module 为什么需要分开两个工程?..., for kotlin (如果使用注解的代码是 Kotlin 代码,必须加上这个,否则注解处理器生效) annotationProcessor project(':car-processor') /...注解处理器是如何工作的 编译的时候,编译器会扫描所有注册的注解处理器,然后记录下每个注解处理器所支持的注解(通过 getSupportedAnnotationTypes 返回) 注解处理会执行很多轮。...编译器首先会读取 Java/Kotin 源文件,然后查看文件中是否有使用注解,如果有使用,则调用其对应的注释处理器,这个注解处理器(可能会)生成新的带有注解的 Java 源文件,生成的新文件也会参与编译...,然后再次调用其相应的注释处理器,然后再次生成更多的 Java 源文件,就这样一直循环,直到没有新的文件生成。

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

100行代码搭建一个IO泄露监测框架

什么要做IO泄漏检测?IO一般就是指的常见的文件流读写、数据库读写,相信每个人都知道,完成读写后都应该手动调用流的close() 方法关闭,一旦忘记就引起了io泄漏了。...//兜底流的关闭 close(); } }}代码中有非常详细的注释,这里就不再一一进行讲述。...,如果实现应用层的io泄漏检测,只要我们通过动态代理+反射代理掉reporter这个静态变量,替换成我们自定义实现的Reporter接口的类,并在自定义类中实现io泄漏异常上报的逻辑,不就完美实现监听了吗...,这里就不再进行一一讲解,大家仔细阅读下上面的代码自然会明白。...4. io泄漏检测测试我们写一段测试代码,获取cpu相关详细,并且故意释放文件流:运行下项目,查看logcat日志输出:可以看到有告警日志打印,并通过日志直接就定位到了异常逻辑:代码第35行创建的FileInputStream

11020

聊聊AbstractProcessor和Java编译流程

:OK,放马过来,谁怂谁是狗。 面试官:那么kapt和transform有什么差别啊? :AbstractProcessor只能处理注解,然后根据注解通过javapoet生成一个新的java类。...最后找到了Java的Api Doc文档,其中有对这个类的一些说明。 Processor释义 注释处理按照rounds的顺序进行。...如果要求处理器在给定轮次上进行处理,则会要求处理后续轮次,包括最后一轮,即使没有要处理的注释。 工具基础结构还可以要求处理器处理由工具的操作隐式生成的文件。...如果返回true ,则声明注释类型,并且不会要求后续处理器处理它们; 如果返回false ,则注释类型无人认领,可能会要求后续处理器处理它们。...其中process方法返回值返回true ,则声明注释类型,并且不会要求后续处理器处理它们; 如果返回false ,则注释类型无人认领,可能会要求后续处理器处理它们。

4.4K50

Kotlin 的 Nothing 详解

它在 else 的这个分支,是不是就只抛异常而返回值了?实际上 Java 和 Kotlin 的任何方法或者说函数,在抛异常的时候都是返回值的——你都抛异常的还返回啥呀返回?是吧?...这是一种很常用的工具函数的写法,包括 Kotlin 和 Compose 的官方源码里也有这种东西。 那么我们继续来看它的返回值类型:都不返回了,就没必要还写 String 了吧?那写什么?...} 虽然找不到 Nothing 的实例,但是这个函数本来就是永远抛异常的,找不到实例也没关系。哎,这不就能用了吗?对吧? 不过,能用归能用,这么写有啥意义啊?是吧?价值在哪?...——以前还跟人说「Nothing 是所有类型的子类型」这种说法是错误的,惭愧惭愧,是说错了。 不过,这个特性又有什么作用呢?...,什么实质工作也做不了,但可以用来作为泛型变量的一个通用的空白占位值。

22930

Kotlin 视频课程系列一:《零基础学习 Kotlin 编程》

的DSL是下一代的编程语言(几行代码构建一个web服务器) “如果你没听说过Kotlin, 没用过Jake Wharton的框架, 不知道什么是Spring,没用过Gradle, 那么对不起浪费您时间了...找不准工作和学习的平衡点 虽然需求完成了, 但工作效率低, 工作完成后没有总结, 个人能力提升不大。...忽略开发中的细节 代码风格、编码格式、异常处理, 长时间练很容易遗漏, 并且漏了自己还不知道。 手脚生疏 形不成编写代码的“肌肉记忆” 每次打开开发工具都像新手一样。...在工作中积累了大量的技术经验,善于总结,乐于分享,发布过大量技术文章。著有《Kotlin 极简教程》、《Spring Boot 2.0 极简教程》、《Kotlin 从入门到进阶实战》等技术畅销书籍。...开启全栈工程师的成长之路, 来跟随一起进入 Kotlin 世界吧。

61630

【黄啊码】MySQL入门—6、掌握这些数据筛选技能比你学python还有用-2

是黄啊码,上节课我们将了DISTINCT、 FROM 、 GROUP BY、 HAVING 、 ORDER BY 这些筛选数据的技能,是不是总感觉少了些啥?你:啊码,你把最重要的where给漏了!...黄啊码:啪,不是漏了,是想单独拿出来讲讲,毕竟讲那么多你们不一定能消化得完你:每节课的开始,就是啪一下吗?黄啊码:额,不是,纯粹是感觉你有点欠揍,哈哈哈。...超过 140 字(可选) 如何使用逻辑运算符,进行多条件的过滤;逻辑运算符刚才介绍了比较运算符,如果我们存在多个 WHERE 条件子句,可以使用逻辑运算符:添加图片注释超过 140 字(可选)比如要查询...,超过 140 字(可选)你:去,这也行。...好好听课,看着 select * from user_info where user_name like '__三%'; 记得,因为前边是两个字,所以用两个_ 看,这不就出来了吗

37230

尝试Java,从入门到Kotlin(下)

为何选择Kotlin 项目遭遇人员变动,包括在内就剩两个人开发,转型成本低,代码质量容易控制。 JVM语言。号称与Java 100%兼容。...因为Lombok的方法是编译期通过注解处理器(annotation processing)生成的,Kotlin编译时只调用了Javac,所以无法处理Lombok定义的方法。...定义一个“未初始化”的值:那么这个值和null有什么区别?又绕回来了。...写在最后 最近家庭工作都比较忙,这短短的一篇转型踩坑记竟然写了个跨年。有些踩坑的记忆随着时间流逝以及用习惯了给慢慢淡化掉了,于是也没写进来。...目前Java系这边的开发尽量使用Kotlin,并没有碰到什么根本上的大问题,与Java的兼容性也挺好的,有精力的同学可以放心品尝。

20130

改善 Android Studio 的构建速度

在这篇文章中,我们将分享一些新的分析方法,以便更好的指出是什么真正影响了构建速度,并分享一些我们正在为此所作的工作,以及你能做些什么来防止构建速度变慢。...大多数使用的注释处理器都是非增量化的,每次进行编辑时都会导致代码重新全量编译。 使用 Java 8 语言特性会导致需要执行去语法糖操作,这将影响构建时间。...使用Kotlin,尤其是 Kotlin(KAPT)中的注释处理,也会影响构建性能。我们将继续与 JetBrains 合作,以将影响降至最低。...3.3 版本专注于未来改善的基础工作(例如,名称空间资源、增量注释处理器支持、Gradle workers),因此提升了 0%。 我们在做什么? 确定内部流程并持续提升性能。...我们还致力于让注释处理器增量化。截至目前,Glide、Dagger 和 Auto Service 都是增量化的,并且我们还在研究其他的。

1K10

Kotlin 极简教程》涉嫌抄袭

先说是不是,再说为什么 通常来说,抛出一个命题,就需要提供足够的证据证明它。这并没有什么意思,但不得不做。...说明:的文章写与 2017年4月17日,有微信原创标志,该电子书的提交日期为 2017年9月。 Gradle 配置,连注释都一字不差 原文截图: ? 该教程内容截图: ?...这么说抖得机灵很好咯? 原文截图: ? 该教程截图: ? 说明:抖机灵这个,生气。 cnkotliner 变成 cnkotlinor? 该教程截图: ?...只是,源码的包名 cn.kotliner 你以为改成 cn.kotlinor 就不一样了吗听说论文查重的软件对于超过 10 个相同的字符才会判定为抄袭,看来这一招很好用是吧。...Kotlin 布道两年多了,曾经有无数人问我 Kotlin 能做的是不是 Java 都能做。尽管我耐心的告诉他们是的,但通常也不会对他们说第二遍 Kotlin 的事儿。

45520

Kotlin 和 Checked ExceptionKotlin 和 Checked Exception

看明白了吗?不是“取代了 Java”,而只是给了大家另一个“选择”。发现国内的技术小编们似乎很喜欢把“选择”歪曲成“取代”。...不理解语言“可用性”的人,往往盲目地以为简短就是好,多写几个字就是丑陋优雅,其实不是那样的。关于 Java 的良好设计,你可以参考之前的文章《为 Java 说句公道话》。...注意到了吗,这也就是你写 Java 代码时,能写出的最糟糕的异常处理代码!因为不知道 foo 函数里面会有什么异常出现,所以你的 catch 语句里面也不知道该做什么。...…… 注意到了吗,这种给每个函数加上 throws Exception 或者 catch (Exception) 的做法,也就是在《编程的智慧》里面指出的经典错误做法。...所以我对 Kotlin什么“结论”呢?没有结论,这篇文章就像我所有的看法一样,仅供参考。显然 Kotlin 有的地方做得比 Java 好,所以它不会因为没有 CE 而完全失去意义。

69720

一个优秀程序员不可避免的问题:内存泄漏

这不好说,如果我们泄漏Bitmap这种大内存的对象,那么修补内存泄漏就像鸡肋一样,“食之无味,弃之可惜”。...接下来咱们再想另一个问题: 什么是内存泄漏?...有了上图,理解内存泄漏的概念就很简单,说白了就是:长生命周期对象A持有了短生命周期的对象B,那么只要A不脱离GC Root的链,那么B对象永远没有可能被回收,因此B就泄漏了。 有什么危害?...但发生GC的时候,告诉GC收集器“”可以被回收。...不过有一点值得注意的,在Kotlin的Lambda中,如果我们没有使用外部对象的变量或者方法,那么Kotlin在编译时,这个Lambda是不会持有外部对象的引用的。

63140

2021 Android年中总结:身体在996,灵魂在向往,在即将35+时放弃了高薪...

什么要在一个比拼『奋斗度』的环境里面待着? 为什么要在一个不太符合自己价值观的公司里面卖身? 为什么可以牺牲生活,难道陪伴家人这么不重要? 难道你担心自己的身体受996影响吗?...难道真的愿意在这里一直待到35+,然后不敢走了吗? 难道为了钱,就真的可以牺牲其他的追求了吗? 没有生活,牺牲身体,看起来是应该跑路了。...回顾过往的招聘工作,以及和同样做招聘的小伙伴探讨过后,发现,大部分公司在招聘时,比较倾向35岁以下的程序员,同时,发现一个现象,当我在招聘网站看简历时,实际也比较少看到35岁以上的简历,这是为什么呢...简单说来,裁员裁掉主要是以下几类人员: 老油条、工作态度积极,在公司混日子养老,工作没啥产出; 自我认知过高,拿着高出2-3个应届生的薪资,却实际工作能力和工作产出等同于一个应届生; 可替代性强,代码能力一般般...大公司是不是简历筛选只看学历看背景,普通本科的,能进去

45200

Java之父接受Evrone专访:您需要的软件可靠性越高,静态类型语言的帮助就越大

他试图在破坏更改的情况下发布这个版本,看看会发生什么。不会破坏任何内容的主要语言版本。知道 Java 对破坏事物持谨慎态度。所有语言都在没有兼容的情况下发展是一个好主意吗?...如果您在工业环境中,一生中的大部分时间都在那里工作,那么工作一次只会有点用处。它必须每次都有效。一次工作和每次工作之间的差异是巨大的。因此,如果它只需要工作一次,那么更动态的语言工作得相当好。...James:不知道。你在问一个关于未来的问题。而问题的问题,“今天是黄金时代吗?”……这个问题含蓄地说:“从这里开始走下坡路了吗?”如果这是黄金时代,那么明天就不会那么黄金了。...通常情况下,人们最终会在语言中添加注释,以便获得类似 TypeScript 的语言,它本质上是带有类型注释的 JavaScript。...而且实际上并不关心您在 JVM 上使用哪种语言。的意思是,Scala 和 Kotlin 都很好。Clojure 真的很有趣,但您必须真正以不同的方式思考。

56130

Java 17 更新(2):没什么存在感的 strictfp, 这回算是回光返照了

Java 17 刚发布的那天 Kotlin 的群里短暂地提到了这一条,结果大家都以为是这玩意儿: 看到 0.3 后面那高贵的 4 了吗,正是因为它的存在,0.1 + 0.2 跟 0.3 不一样!...这恐怕没什么令人惊喜的,稍微有点儿踩坑经历的小伙伴都不会这么被坑,对吧,对吧,对吧。...那么问题来了,为什么要引入这么个奇怪的东西呢?翻了翻文档发现(不然还能怎样,那个时候才刚开始学五笔。。。)...,在上世纪 90 年代,Java 虚拟机为了保持原有的浮点型语义,在兼容 x86 架构的处理器上执行 x87 指令集(是 x86 指令集的一个关于浮点型的子集)的情况时耗费了很大的开销,性能上令人很不满意...return angdeg / 180.0 * PI; } Android 的 JDK 代码来自于 OpenJDK,连注释都没改过。

1.3K30

如何避免 Java 中的“NullPointerException”

在本文中,将解释这个问题的根源并提供解决该问题的方法。 2 问题的根源:Java 弱类型安全 你听说过编译类型安全吗?如果不在本文中,您可以了解它是什么以及编译时和类型安全之间的区别。...我们需要一个解决方案来指出开发人员在编译步骤中遗漏了什么。 11 @NotNull @Nullable 我们需要一个解决方案,它可以在编译步骤中读取我们的代码,并通知我们错过了潜在的 NPE 场景。...为此,我们可以使用 Java 注释处理器。Java 注释处理器有很多用途,但也可以用于我们的案例。在本文中,您可以找到一个如何使用注释处理器来检查可变性的示例。...有几个与 NPE 问题相关的注释处理器。并非所有这些都是相同的,并且遵循完全不同的方法。...很快,这个注解做了接下来的事情: 注解 13 使用检查器框架 Checker Framework提供了 @NonNull 和 @Nullable 注释以及可以识别潜在空检查的编译器处理器步骤。

2.8K20

也许你需要这个为数据类生成 DeepCopy 方法的库

前不久 JetBrains 在北京搞了一次技术大会,在演讲当中提到了一个叫 DeepCopy 的库,那么我们今天就来详细说说它。 我们有什么拷贝的需求?...不过问题不大,我们总是会想办法让编译器或者运行时来帮我们搞定一切,于是想到了要不要写个 Kotlin 的编译期插件呢,正巧 KotlinConf 也有人分享了一下这个话题,不过由于目前这套机制还没有正式开放...但注解处理器可以呀,不信你瞧—— 来我们再试试注解处理器 注解处理器实现理论上是可以的。额,实际上当然也是可以的,不然这在 JetBrains 大会上讲过的东西要是不行的话,可丢起那人。。。...:0.0.4" 读取的方法就不细说啦,后面我会提供源码,大家有兴趣可以花两分钟详细阅读下ヽ(;´Д`)ノ 需要提一句的是,我们通过注解处理器生成的 deepCopy 可以添加默认参数,这里有不少细节需要处理...其实如果添加默认值,这个注解处理器非常容易写的,因为它不需要处理泛型,不需要处理与 Java 的类型映射,也不需要处理别名,一气呵成,就像这样: fun Owner.deepCopy(): Owner

73620

Kotlin Vocabulary | 揭秘协程中的 suspend 修饰符

Kotlin 协程把 suspend 修饰符引入到了我们 Android 开发者的日常开发中。您是否好奇它的底层工作原理呢?编译器是如何转换我们的代码,使其能够挂起和恢复协程操作的呢?...了解这些将会帮您更好地理解挂起函数 (suspend function) 为什么只会在所有工作完成后才会返回,以及如何在阻塞线程的情况下挂起代码。...生成状态机 特殊说明: 本文接下来所展示的,并不是与编译器生成的字节码完全相同的代码,而是足够精确的,能够确保您理解其内部发生了什么Kotlin 代码。...编译器帮我们做了很多工作!...了解了编译器在底层所做的工作后,您可以更好地理解为什么挂起函数会在完成所有它启动的工作后才返回结果。

2.2K10

【翻译】17位谷歌专家称号大牛如何看待Kotlin

问题也摆在那里,至少对于安卓社区来说,那就是:现在 Kotlin 可以投入生产了吗的答案是……当然可以啦, JetBrains 去年就发布了 1.0 的稳定版本。...有人说他是空安全的,不认为,你会认为加了一个 ? 就是空安全了吗?...难道了吗?噢,好吧。 够了,够了,掩饰喜欢 Kotlin 语言的扩展功能,它甚至能把 Int 扩展成接口,把数字扩展成 38 进制,还能把异常扩展成工具类。...总之,对,是不是说太多了?噢,没关系,还好,你是不是很累了?你是不是随机采访了 17 位码农对 Kotlin 的看法?噢,的天!他们对你说了什么?他们都做了什么?...噢,很好,对,没关系,真的没关系,什么的主治医生来了吗?噢,那不好意思,抱歉,想说很抱歉,再见,的朋友!希望今天的话能对你有益!再会!

1.1K50

JetBrains 2018 中国开发者生态报告:Java 最流行

作者:王练 链接:www.oschina.net/news/103508/ 公众号注:调查研究中,3%的人似乎养成了睡觉的习惯,作为一贯以勤奋自视的,一下有点接受不了!...每年,关于流行语言的调查结构都有所不同,为了更好的洞察未来的趋势,我们进一步地向大家调查 “您现在正在学习/未来想要学习什么编程语言? ”。...其次是Kotlin (32%)、Python (31%)、Java (14%) 和 C++ (10%)。 ?...我们还调查了开发人员的睡眠情况: 61%的受访者每天睡7-8小时; 29%的人睡5-6小时; 有趣的是,3%的人似乎养成了睡觉的习惯。 3%的人睡眠不足5小时; 4%的人睡眠超过8小时; ?...当我见到你,心跳漏了一拍

41210
领券