小编use*_*643的帖子

我无法使用自定义 Kotlin 库中的顶级函数

我想为 android 创建一个包含一些顶级函数的 kotlin 库。

我创建了一个 android 库项目。

我添加了一些顶级函数和一些类

// filename TestMethodFirst.kt
fun testMethodFirst() {}
Run Code Online (Sandbox Code Playgroud)
// filename TestClass.kt
class TestClass() {}
Run Code Online (Sandbox Code Playgroud)

我已经使用 ./gradlew build 构建了库

我已将此库作为 aar 库包含到另一个项目中

库中的类已顺利解析并导入。顶级函数尚未解析,因此无法使用。我尝试过手动添加导入,但它也不起作用。当我尝试使用 java 中的顶级函数作为静态方法执行时,它就可以工作了。

这不起作用

// filename Test1.kt
fun test1() {
    testMethodFirst()
}
Run Code Online (Sandbox Code Playgroud)

这有效

// filename Test2.kt
fun test1() {
    TestClass()
}
Run Code Online (Sandbox Code Playgroud)

这有效

// filename Test3.java
class Test {
    void test() {
        TestMethodFirstKt.testMethodFirst();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用 AS 4.1 Canary 7 和 AS 3.6.2

附件包含库项目和aar库

项目

生成的aar

java android kotlin aar

8
推荐指数
1
解决办法
790
查看次数

Kotlinx.Serialization:如果所有内部属性也被排除,则从序列化中排除对象

I\xe2\x80\x99m 尝试实现在排除所有内部对象的情况下从序列化中排除整个对象的功能。

\n

例如当我想将此数据类序列化为 json 时

\n
data class Car(val engine: Engine? = null, val size: Size?  = null)\ndata class Engine(val type: String?  = null, val horsePower: Int?  = null)\ndata class Size(val size: Int? = null)\n\nCar(engine = Engine(horsePower = null), size = Size(size = 1000))\n
Run Code Online (Sandbox Code Playgroud)\n

那么我应该得到以下输出(即使设置了引擎也被排除)

\n
car {\n    size {\n        size = 1000\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

有谁对如何实现这一目标有任何建议吗?

\n

json kotlin kotlinx.serialization

2
推荐指数
1
解决办法
4468
查看次数

标签 统计

kotlin ×2

aar ×1

android ×1

java ×1

json ×1

kotlinx.serialization ×1