最好的方法来处理这种情况下,“聪明的演员是不可能的”

我想知道处理这种情况的最好方法是什么 class Person(var name:String? = null, var age:Int? = null){ fun test(){ if(name != null && age != null) doSth(name, age) //smart cast imposible } fun doSth (someValue:String, someValue2:Int){ } } 调用doSth方法并确保名称和年龄nt为空的最简单方法是什么? 我正在寻找一个简单的方法,就像我只使用let的一个variables场景一样 name?.let{ doSth(it) }

如何命名一个线程?

我怎样才能命名这个Thread ? override val t: Thread = Thread { try { transmit() } catch (e: Exception) { println(“Transmitter throws exception: $e”) } }

带参数的单身人士在Kotlin

我正在尝试将Android应用程序从Java转换为Kotlin。 应用程序中有几个单身人士。 我没有构造函数参数的单身人士使用伴侣对象。 还有另外一个单例需要一个构造函数参数。 Java代码: public class TasksLocalDataSource implements TasksDataSource { private static TasksLocalDataSource INSTANCE; private TasksDbHelper mDbHelper; // Prevent direct instantiation. private TasksLocalDataSource(@NonNull Context context) { checkNotNull(context); mDbHelper = new TasksDbHelper(context); } public static TasksLocalDataSource getInstance(@NonNull Context context) { if (INSTANCE == null) { INSTANCE = new TasksLocalDataSource(context); } return INSTANCE; } } 我在kotlin的解决方案: […]

GSON抛出期望的BEGIN_OBJECT,但是是BEGIN_ARRAY

面对这个问题过去几天,有没有人检查这个问题? 任何帮助将不胜感激。如何解决这个问题? GSON抛出期望的BEGIN_OBJECT,但是是BEGIN_ARRAY 问题来自 override fun onSuccess(str_SUCCESS: String) { System.out.println(“JSON_IS”+str_SUCCESS) val paymentScheduleModel = Gson().fromJson(str_SUCCESS, PaymentScheduleModel::class.java) // Problem here } Json回应是 { “status”: { “statusCode”: 10016, “isSuccess”: true, “message”: “Success” }, “data”: { “payback_schedule”: [ { “id”: 2, “paid_amount”: “INR NaN”, “paidStatus”: “Upcoming Payback”, “paid_status”: “P”, “s_date”: “05/01/2018 12:31:10”, “e_date”: “11/01/2018 12:31:10”, “current_balance”: “INR 399”, “payanytime_button_status”: […]

Android室错误:Dao类必须用@Dao标注

我正在使用我的Android应用程序的空间。 我现在试图设置我的数据库,但是有一个错误消息,说,Dao类必须注释@Dao。 但是正如你在编码片段中看到的那样,Dao类用@Dao标注。 有谁知道问题或我的错误可能是哪里? 这两个文件都不在同一个文件夹中(DAO位于服务文件夹中,而另一个类位于模型文件夹中) Device.java @Entity(tableName = “device”) public class Device { @PrimaryKey(autoGenerate = true) public int device_id; @ColumnInfo(name = “identifier”) public String identifier; @ColumnInfo(name = “language”) public int language; @ColumnInfo(name = “searchFilter”) public int searchFilter; public Device(String identifier, int language, int searchFilter){ this.identifier = identifier; this.language = language; this.searchFilter = searchFilter; } } […]

无法传递结果ResultInfo {who = null,request = 2,result = 0,data = null}相机

这里是相机代码 private void selectImage(){ final int Camera_CPTURE = 1; try { Intent capture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(capture,Camera_CPTURE); }catch (ActivityNotFoundException e) { String error =”opps ur devices doesn’t support capturing”; Toast toast = Toast.makeText(this,error,Toast.LENGTH_SHORT); toast.show(); } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { picUri = data.getData(); performCrop(); } […]

在多个接收器上调用一个通用的方法

通常情况下,我有以下模式: ax() ay() az() Kotlin提供了一个方便的选择: a.run { x(); y(); z() } 有时我有这样的模式: ax() bx() cx() 我想写这样的东西: applyTo(a, b, c) { it.x() } 所以我可能会执行以下操作: fun applyTo(vararg ps: P, fx: (P) -> Unit) = ps.forEach { fx(it) } 或者,像这样的东西: ::x.eachOf(a, b, c) 所以我可以实现这个function: fun ((P) -> R).eachOf(vararg p: P) = p.forEach { this(it) } 有没有办法使用标准库在多个接收器上调用共享方法,或者缩短模式#2的更好方法?

Kotlin null来自Java

当我将Java代码从一个库转换为Kotlin时,我会看到Java代码中是否存在空值检查,并想知道如何最好地将其转换。 我仍然需要在Kotlin的空检查,因为我不能控制,如果Java将使对象为空? 比方说,我有一个CameraDevice可以从Java返回null 我应该如何定义这个 private lateinit var mCameraDevice: CameraDevice 然后不需要空检查或像这样.. private var mCameraDevice: CameraDevice? = null 然后保持空的检查 if (mCameraDevice != null) { // do something } Kotlin的可玩性让我感到困惑,因为我觉得我不应该处理null,并且应该使用选项1,但是基本上我使用的每个库都是Java,所以我必须处理空值,并且使用选项2

Kotlin对象。 哪种方式的初始化是正确的?

对象初始化有什么区别吗? 时间字段会有不同的行为还是只是在Java(拆分声明和初始化)相同? 谢谢 object DataHolder { val time : MutableList init { time = arrayListOf() } … 和这个 object DataHolder { val time = arrayListOf() ….

Kotlin:超级构造函数中所做的更改被覆盖

我很难理解Kotlin实际上在做什么: 我的unit testing看起来像这样: @Test fun testReadCursorRequest() { val xml = fromFile() val parser: ReadCursorRequestParser = ReadCursorRequestParser(xml) assertEquals(0, parser.status) assertEquals(134, parser.contacts!!.size) } 我的解析器看起来像这样 abstract class EnvelopeParser(val xml: String) { abstract fun parseResponse(response: Element) init { parseResponse(xmlFromString(xml)) } // non-related stuff } class ReadCursorRequestParser(xml: String) : EnvelopeParser(xml) { var contacts: List = mutableListOf() override fun parseResponse(response: Element) […]