Java的互操作性:如何在Kotlin中声明一个编译时数组常量?

我有这个Java注释声明,并希望在Kotlin中使用它 class CurlCommand { Parameter(names = “-groups”, description = “Comma-separated list of group names to be run”) var groups: Array? = null } 编译器报告TYPE_MISMATCH必需:kotlin.Array find:kotlin.String 我试过了 Parameter(names = Array(1, {i-> “-groups”}), description = “Comma-separated list of group names to be run”) var groups: Array? = null 并得到“错误:(20,23)Kotlin:一个注释参数必须是一个编译时常量” 我怎样才能满足Kotlin编译器? Java只是接受 @Parameter(names = “-groups”, description = “Comma-separated […]

异步工作,但得到未解决的参考等待

我有以下代码。 我无法理解为什么会发生这种情况。 我没有发现有关这个的现有答案。 我试图直接在tenny和twy分配的地方等待,但这也行不通。 我不认为依赖关系有问题,因为aysnc的作品。 我也发布了我的build.gradle文件。 import kotlinx.coroutines.experimental.async fun main(args: Array) { async{ val tenny = star_ten(1) val twy =star_two(10) println() println(twy.await()+tenny.await()) println() } } fun star_two(num:Int):Int{ return num * 2 } fun star_ten(num:Int):Int{ return num * 10 } 我的build.gradle是 group ‘org.nul.cool’ version ‘1.0-SNAPSHOT’ buildscript { ext.kotlin_version = ‘1.1.60’ repositories { mavenCentral() } dependencies { […]

Kotlin代表了一个未定义的价值

所以关于Kotlin一件大事就是强迫你不要在你的项目中实现Kotlin 。 什么是替换null想法然后,如果你必须创建一个新的对象Foo()然后填写它的属性(如填写表格) foo.name = “foo” , foo.age = 10 , 等等… 然后检查哪些字段没有被赋值并警告用户填写它。 我可以简单地使用? 对variablestypes,并检查是否为空,但这是摆脱Null Pointer Exception的整个想法 在Kotlin有没有一个不确定的领域有什么好的实现。

如何将Java文件转换为Kotlin文件?

我正在通过Kotlin为Android开发者探索Kotlin。 其中一个步骤是使用Convert Java File to Kotlin File来查看Java和Kotlin文件的比较。 我很好奇这个function是如何工作的。 该工具是从Java输入创建一个抽象语法树,然后转换到Kotlin? 还是在做更简单的事情?

kotlin未解决的KDoc链接,但IntelliJ不喜欢导入修复它

import abc.MyClass.MyEnum; /// from Java /** * [MyClass.MyEnum] */ class efg () : MyClass.MyEnum { return MyClass.MyEnum.BiGNUMBER; } 我有类似于IntelliJ上面的东西…但它会确定导入为未使用 – 所以优化导入将删除它…但是,如果我不插入手动导入,然后在我的文档它将识别[MyClass .MyEnum] 不能解析 我能做什么?

在Kotlin 1.1.0编译中无法解析符号@ReadOnly和@Mutable

在使用Kotlin 1.1.0进行编译时出现错误“无法解析符号ReadOnly”和“Can not resolve symbole Mutable”。 Kotlin 1.1.0不支持@ReadOnly和@Mutable吗? 以下是一个示例代码。 SampleList.java Kotlin 1.0.7 import org.jetbrains.annotations.Mutable; import org.jetbrains.annotations.ReadOnly; import java.util.ArrayList; import java.util.List; public class SampleList { @ReadOnly // Can resolve symbol ‘ReadOnly’ public static List getReadOnlyList() { return new ArrayList(); } @Mutable // Can resolve symbol ‘Mutable’ public static List getMutableList() { return new ArrayList(); } } […]

Kotlin stdlib和Databinding

是否有可能在xml中使用Kotlin stdlib中的方法? 例如这个代码 产生编译错误 执行任务失败:app:compileDevDebugJavaWithJavac’。 java.lang.RuntimeException:发现数据绑定错误。 **** / data binding error **** msg:无法在类java.lang.String文件中find方法isNotEmpty():D:\ Projects \ PushTracker -Android \ app \ src \ main \ res \ layout \ fragment_appointment_simple_details。 xml loc:104:44 – 104:70 **** \数据绑定错误**** 很明显,数据绑定试图find方法isNotEmpty()在Java的字符串,但我可以强制数据绑定编译器使用kotlin的字符串?

MutableLiveData:在Retrofit / Moshi中分配给ArrayList的问题

我正在用一个Retrofit HTTP调用来调试一个问题。 正在进行的调用是成功的,并且响应似乎与我的POJO(在这种情况下为Kotlin数据类)格式相同。 然而,在将我的POJO列表分配给Response>时似乎有一些脱节。 没有错误,而且我已经证实,答复实际上并不是错误的。 我在这里错过了什么? 你会如何去find我的MutableLiveData和我的响应之间的断开? 发生断开连接的ViewModel。 调用enqueueProjectAPICall()之后,尽管响应是项目列表,但_projects仍然为空: class ProjectBrowserViewModel(): ViewModel(){ private var projectCall: Call private val API_KEY = “whatever” //Mutable private data private val _projects = MutableLiveData<List>() private val _selectedField = MutableLiveData() //Exposed Data val projects: LiveData<List> get() = _projects val selectedField: LiveData get()=_selectedField init { projectCall = BehanceAPI.behanceService.projects(API_KEY) } fun loadProjectsFromField(fieldName: String){ […]

来自回收站视图的列表项的异步调用

我有一个RecyclerView ( ListView )。 每个列表项(行)都有上传/下载按钮。 当用户按下按钮时,它必须上传或从亚马逊下载文件。 上传或下载过程正在使用Kotlin Fuel框架完成。 Fuel是一个异步框架。 一旦上传或下载过程完成,我就写回调来RecyclerView适配器。 现在,我必须改变按钮(例如,如果按钮是上传的,在用户点击之后,它必须上传,一旦上传完成,它应该改变为下载按钮)。 我搜索列表(我传递给列表视图),一旦调用回调方法,在RecyclerView查找列表项的位置。 但是我不知道如何让View Holder更新从上传到下载或下载上传的按钮。 我试过,一旦识别行,就调用notifyDataSetChanged 。 但它的行为如此不同,以至于RecyclerView的第一页。 notifyDataSetChanged后根本不显示上传/下载按钮。 我应该调用notifyItemChanged(position)以便它调用bindViewHolder() ,它具有逻辑显示下载按钮,如果文件不存在,否则上传按钮。 或者还有其他更好的方法来做到这一点。 我在单独的文件中定义了FUEL调用,以实现可重用性。

在函数中返回单元的目的是什么?

从Kotlin文档: 如果一个函数没有返回任何有用的值,它的返回types是Unit。 单位是只有一个值的types – 单位。价值。 这个值不必显式返回: fun printHello(name : String?) : Unit { if (name != null) print(“Hello, $name!”) else print(“Hi there!”) // We don’t need to write ‘return Unit.VALUE’ or ‘return’, although we could } 在函数中返回单元的目的是什么? 为什么VALUE在那里? 这是什么VALUE?