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

KotlinKotlin 与 Java 互操作 ② ( @JvmField 注解字段给 Java | @JvmOverloads 注解修饰函数 | @JvmStatic 注解声明静态成员 )

三、使用 @JvmStatic 注解声明静态成员 1、Java 正常访问 Kotlin 伴生对象成员 2、Java 以静态方式访问 Kotlin 伴生对象成员 一、使用 @JvmField 注解暴露...调用相应的 Getter 和 Setter 方法 , 才能进行访问 ; 代码示例 : Kotlin 类 : 在 Kotlin声明成员属性 , 默认就是 private 私有属性 , 默认为其生成了...---- 在 Kotlin 中 , 没有静态成员概念 , 需要声明静态成员时 , 一般都在其 Companion 伴生对象中声明 ; 在 Java 中 调用 Kotlin 的 Companion 伴生对象...中的成员时 , 需要通过如下形式进行调用 : Kotlin类.Companion.成员属性 Kotlin类.Companion.成员函数 如果想要 在不使用 Companion 的前提下 直接调用 Kotlin...中的 Companion 伴生对象 成员 , 可以 在 companion object 中 , 使用 @JvmStatic 注解 将伴生对象中的成员 声明 为 Java 静态成员 , Java 中可以按照静态成员的方式进行访问

94030

Kotlin】抽象类 ( 声明 | 抽象类成员 | 抽象类继承 | 抽象方法覆盖 | 抽象方法实现 )

抽象类声明 III . 抽象类中的 ( 正常 / 抽象 ) 的 ( 成员 / 方法 ) IV . 抽象类继承 V . 抽象方法的覆盖 VI . 抽象方法的实现 I ....抽象类总结 ---- 抽象类总结 : ① 声明 : 抽象类中使用 abstract 声明 ; ② 成员 : 抽象类中既可以定义正常属性和方法 , 又可以定义抽象的属性和方法 ; ③ 继承 : 抽象类可以继承抽象类...抽象类声明 ---- 1 ....抽象类中的 ( 正常 / 抽象 ) 的 ( 成员 / 方法 ) ---- 0 . 抽象类内成员总结 : 抽象类中可以定义正常的成员和方法 , 也可以定义抽象的成员和方法 ; 1 ....定义正常的属性和方法 : 抽象类中可以定义正常的 成员属性 和 成员方法 ; ① 正常成员属性 : 该成员属性可以是常量 , 也可以是变量 ; ② 正常成员方法 : 正常的方法 , 定义有方法体 ; 如果函数有方法体

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

Kotlin】扩展函数 ( 扩展函数声明 | 调用方式 | 与成员函数优先级 | 接收者空值处理 )

, 即声明扩展函数和调用扩展函数的类型后面都必须有 ?...扩展函数声明格式 : 扩展函数在函数前多了接收者类型 , 函数体中可以使用 this 调用 接收者类型对象中的成员 ; fun 接收者类型.扩展函数名 ( 扩展函数参数列表 ) { //扩展函数函数体..., 接收者类型被声明成基类类型 , 调用的扩展函数就是基类的扩展函数 ; ③ 接收者类型派生类 : 如果 接收者类型 声明为派生类 , 那么就会调用派生类的扩展函数 ; 3 ....变量声明为父类类型 , 赋值子类对象 //接收者类型声明为 Student , 但实际对象是 MaleStudent 类型的 // 此时扩展函数调用 Student 接收类型 的扩展函数...空值处理的两种类型 : ① 非空类型 : 这是 Kotlin 的默认类型 , 如 Student 类型是非空类型 , 不能被赋值为 null ; ② 可空类型 : 在类型名称后使用 ?

69530

Google 推荐在 MVVM 架构中使用 Kotlin Flow

) 使用 Data Mapper 分离数据源 和 UI Kotlin Flow 结合 Retrofit2 + Room 的混合使用 Kotlin Flow 与 LiveData 的使用 使用 Coil...Kotlin Flow 如何与 Retrofit2 + Room 混合使用?...Kotlin Flow 在 Repositories 中的使用 如果我们想在 Flow 中使用 Retrofit 或者 Room 进行网络请求或者查询数据库的操作,我们需要将使用 suspend 修饰符的操作放到...Kotlin Flow 在 ViewModel 中的使用 在 ViewModel 中使用 Flow 之前在 Jetpack 成员 Paging3 实践以及源码分析(一) 文章也有提到, 这里我们在深入分析一下... 这是获取神奇宝贝的详细信息,通过 DataBinding 以声明方式将数据(神奇宝贝的体重)绑定到界面上,更多使用参考项目中的代码。

4.1K20

与小清新的距离 你只差一个RxKotlin !

RxKotlin RxKotlin是基于kotlin扩展的rx衍生体,对kotlin无需再普及,这种支持Lambdas语法的简洁姿势,会让代码变得小清新和灵活。可能你已经在java8上体验了一番。...开发者可以用Kotlin将Rxjava变得更加简单,接下来用2.x 先睹为快!...data class 是用来声明一个class的,好比c中def,js中var申明变量对象一样。 SearchService :用过retrofit的也很明白,定义的一个抽象API接口。...通过这个简单的栗子,发现不管用rxJava, 还是只用retrofit, 通过使用rxkotlin将业务流程变得更加清晰,那么kotlin是否也有他的操作符,当然他也有过滤器,转换器,拆分符和rxjava...写在最后 Rx家族目前最为熟知的是rxjava和rxSwift,前两者在移动平台上开发也不再是什么新鲜事了,那么其他的家族成员是否也会受到大家的热宠呢,让我们拭目以待!

88610

Kotlin + buildSrc:更好的管理Gadle依赖!

管理Gradle依赖的三种不同方法: 手动管理 使用Google推荐的“ext” Kotlin + buildSrc 1、手动管理 这是一种大多数人在采用的管理依赖的方法,但每次升级依赖库时都需要做大量的手动更改...Kotlin + buildSrc == Android Studio Autocomplete 您需要在您的项目里创建一个buildSrc模块,然后编写kotlin代码来管理依赖库,使得IDE支持自动补全...: plugins {     `kotlin-dsl` } buildSrc/src/main/java/Dependencies.kt object Versions {     val support_lib... Libs.retrofit_rxjava_adapter implementation Libs.rxjava 结束语 我强烈推荐您使用“Kotlin + buildSrc”的方法。...buildSrc的Android Library,试了好几遍都提示“Gradle sync failed: Plugin with id 'com.android.library' not found”的错误

2.3K10

编写 Android Library 的最佳实践

而接入者的项目原可能已经依赖了这些库,一旦再接入了你的,就会导致错误,提示 duplicated class was found。 这种做法与 Gradle 的依赖管理机制完全是背道而驰的。...了,这个时候我应该在 library 的 build.gradle 里这样写: compileOnly "com.squareup.retrofit2:retrofit:2.4.0" compileOnly...:retrofit:$versions.retrofit" 这样做的好处是,如果引用者的项目本来就已经依赖了 Retrofit,那么皆大欢喜,什么都不用加,并且上面的 $versions.retrofit...意味着引用者可以自己决定他要用哪个版本的 Retrofit,一般来讲只要大于等于你编译库时用的版本都不会有太大问题,除非 Retrofit 自己大量修改了 API 导致编不过的那种。...,请检查参数" ... } } 这样一写,你的调用者只要点点鼠标,进来看一下你这个类,就能迅速把错误码跟错误提示对应上。

1.2K01

诡异了,AtomicInteger 在 Kotlin 里面居然是 Abstract 的?

人生自古哪儿没坑 作为一个用了两年 Kotlin 的人,最近越来越控制不住自己,于是乎各种 Java 代码都开始变成 Kt,于是,也就发现了更多好玩的东东~ 话说呀,有个叫做 Retrofit 的框架,...让某一个类继承 AtomicInteger 来存储一个线程安全的状态值,如果大家有兴趣的话,可以去看下这个类:CallArbiter.java (https://github.com/square/retrofit.../blob/master/retrofit-adapters/rxjava/src/main/java/retrofit2/adapter/rxjava/CallArbiter.java) 而我呢,最近在闲暇时间仿照...: AtomicInteger{ //错误!...这错误报的虽然是说没有实现 toByte 方法,可仔细观察一下就会发现,没实现的方法居然还有 toShort 和 toChar。。 2.

71110

kotlin--综合运用Hilt、Paging3、Flow、Room、Retrofit、Coil等实现MVVM架构

前面我们使用Java来运用JetPack中的一系列组件,又使用kotlin运用这些组件实现了一系列功能: kotlin--Flow文件下载 kotlin--Flow结合Room运用 kotlin--Flow...结合retrofit运用 kotlin--StateFlow运用 kotlin--SharedFlow运用 接着,Jetpack的Paging3中,我们使用的语言是kotlin,相信通过这些项目的对比,...你就能发现koltin取代Java的理由了,kotlin拥有更好的扩展性,更高的性能,更简洁的代码,更好的Jetpack组件支持,如果你还对kotlin不熟悉,那么可以查阅我的kotlin专题博客,在此也要感谢动脑学院...上拉刷新、重试按钮、错误信息布局文件如下: <?...endOfPaginationReached = false) } 此时AppHelper的init函数还没有调用 4.App Starup image.png App Starup是JetPack的新成员

3.3K30

Android MVI框架搭建与使用

implementation 'com.squareup.retrofit2:retrofit:2.9.0' //retrofit moshi implementation "...二、网络请求   当我们使用Kotlin时,网络访问就变得更简单了,只需要Retrofit和协程即可,首先我们在com.llw.mvidemo包下新建一个data包,然后在data包下新建一个model...Retrofit一开始是支持Gson转换的,后面增加了MoShi的转换,Moshi拥有出色的Kotlin支持以及编译时代码生成功能,可以使应用程序更快更小。...作为网络接口请求的地址头,然后构建了MoShi,通过MoShi去进行JSON转Kotlin数据类的处理,之后就是构建Retrofit,将MoShi设置进去,最后就是通过Retrofit创建一个网络请求服务...mainViewModel.mainIntentChannel.send(MainIntent.GetWallpaper) } } } }   说明一下,首先声明变量并在

3.1K40

Jetpack 系列之Paging3,看这一篇就够了~

协程 看这一篇就够了 Kotlin Flow 看这一篇 带你入门~ 项目示例 在官方文档中也给出了我们Paging在架构中的使用图 ?...: Retrofit = Retrofit.Builder() .baseUrl(BASEAPI) .client(okHttpClient)...(mClass) as T } } 和 DataApi接口,这里我们将方法声明为挂起函数,便于在协程中调用 interface DataApi { /** * 获取数据...LoadState的值有三种,分别是NotLoading:当没有加载动作并且没有错误的时候 Loading和Error顾名思义即对应为正在加载 和加载错误的时候,监听方式除了addLoadStateListener...dataBindingUtil.root) { var binding = dataBindingUtil } } 为了便于演示我们这里在数据列表中新增了一个更新数据的按钮,在Activity中声明

3.2K10

RxHttp ,比Retrofit 更优雅的协程体验

首先我声明一点,RxHttp的出现,并不是要干掉谁,而是给大家多一个选择,多一个不一样的选择。...稳定性 我一直认为Retrofit,是当下综合得分最高的选手,RxHttp也很优秀,但得分比Retrofit低那么一丢丢,那这一丢丢差在哪里呢?...,再有就是多个注解非法在一起使用时,只有在编译期间才能给我们明确的错误,这也是我刚上手Retrofit比较头疼的一点。...综上所述 RxHttp易用性远胜Retrofit,但稳定性不如Retrofit,功能上都能实现,算打个平手。...而且对于UI来说,只需要data字段即可,错误提示啥的我管不着。 那有没有什么办法,能直接拿到data字段,并且对code做出统一判断呢?

2.1K20

Jetpack 系列之Paging3,看这一篇就够了~

: Retrofit = Retrofit.Builder() .baseUrl(BASEAPI) .client(okHttpClient)...(mClass) as T } } 和 DataApi接口,这里我们将方法声明为挂起函数,便于在协程中调用 interface DataApi { /** * 获取数据...LoadState的值有三种,分别是NotLoading:当没有加载动作并且没有错误的时候 Loading和Error顾名思义即对应为正在加载 和加载错误的时候,监听方式除了addLoadStateListener...我们也需要在Error状态下监听具体的错误,无网络的话就显示无网络UI 服务器异常的话 就提示服务器异常,代码如下所示: is LoadState.Error -> { Log.d(TAG,...dataBindingUtil.root) { var binding = dataBindingUtil } } 为了便于演示我们这里在数据列表中新增了一个更新数据的按钮,在Activity中声明

1.8K20

Android Compose 新闻App(一)网络框架搭建

就命名GoodNews吧,开发语言就是Kotlin,我这里用的是当前最新版本的AS,点击Finish完成项目创建。...之前用Java写网络框架时是通过Okhttp、Retrofit、rxJava、那么在Kotlin中就使用Retrofit和协程来操作,在app的build.gradle的dependencies{}闭包中添加如下代码...: //Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2...这里我们就拿到了返回的数据,通过返回的数据去构建Kotlin的Data类。...这里简化了Retrofit回调的写法,这里定义了一个await()函数,它是一个挂起函数,我们给它声明了一个泛型T,并将await()函数定义成了Call的扩展函数,这样所有返回值是Call类型的

2.3K20

Kotlin 协程 看这一篇就够了

前言 Kotlin协程是什么,如何使用?如何结合Retrofit使用?Kotlin协程的优势在哪里?相信看完这一篇你一定有所收获!...1、协程可以帮我们自动切线程 2、摆脱了链式回调的问题 Retrofit 如何使用协程 从Retrofit2.6.0开始,retrofit就自动支持协程了,这里我们从「聚合数据」上找到一个开放api 我们先来看之前我们怎么使用的...BaseReqData>, t: Throwable) { tvName.text = t.toString() Log.d("网络请求错误...首先我们在ApiService中新增一个函数 ,声明为挂起函数,类型不需要添加Call @GET("toutiao/index") suspend fun queryDataKotlin(@Query(...最后的最后,协程的强大远远不止上述 在项目中使用Jetpack 对kotlin的扩展,可以更加便捷的创建和使用协程.

1.5K10

Effective Kotlin 译文:Chapter3-Item24-泛型的型变

,例如 List 中的 T,Comparable 中的 Int 等 variance modifiers 型变修饰符 in 和 out - 子类泛型 标准翻译应为:类型参数为子类的泛型,...为了描述方便,此处简称为「子类泛型」 - 父类泛型 标准翻译应为:类型参数为父类的泛型,为了描述方便,此处简称为「父类泛型」 function type 函数类型 形如:(T)-> U 译者注:本篇专有名字比较多...(声明时使用了 out 修饰符),而 MutableList 则是不型变的。...中的 List,在 Kotlin 中, List 只提供了可读方法,因此 List 在声明处定义成了协变(使用 out) 对应的,逆变的类型参数如果放在公有的输出位置,也会存在问题: open...译者注: 在 Java 中只有使用处型变 总结 Kotlin 有强大的泛型类型,并且支持使用声明处型变以及使用处型变 默认的类型参数是不型变的 out 修饰符可以使类型参数协变 in 修饰符可以使类型参数逆变

58410

Effective Kotlin 译文:Chapter3-Item24-泛型的型变

variance modifiers 型变修饰符 in 和 out 子类泛型 标准翻译应为...:类型参数为子类的泛型,为了描述方便,此处简称为「子类泛型」 父类泛型 标准翻译应为:类型参数为父类的泛型,为了描述方便,此处简称为「父类泛型」 function type...Kotlin 中唯一一个支持型变的类型,还有一个更加常见的支持协变的类型就是 List(声明时使用了 out 修饰符),而 MutableList 则是不型变的。...中的 List,在 Kotlin 中, List 只提供了可读方法,因此 List 在声明处定义成了协变(使用 out) 对应的,逆变的类型参数如果放在公有的输出位置,也会存在问题: open...译者注: 在 Java 中只有使用处型变 总结 Kotlin 有强大的泛型类型,并且支持使用声明处型变以及使用处型变 默认的类型参数是不型变的 out 修饰符可以使类型参数协变 in 修饰符可以使类型参数逆变

71840

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券