firebase数据库:与Kotlin委托属性的模型

我正在使用Kotlin对象来处理我的Firebase数据库模型,如指南中所述 。 我有很多字段存储为字符串,但实际上是枚举,所以为了types安全我有枚举字段在模型中,再加上一个字符串委托属性,返回firebase存储的值(如问我建议问了一些问题前)。 现在,如果我在代码中获取/设置字符串委托,这些字段可以工作,但是当从/从数据库的json格式转换时,firebase库似乎跳过它们。 一个简单的例子: abstract class BaseModel { @Exclude open var path: String? = null // fails even if I delete this field! } class Weight() : BaseModel() { constructor(v: Double, u: WeightUnit) : this() { value = v unitEnum = u } var value: Double = 0.0 @Exclude var unitEnum: WeightUnit = WeightUnit.KG […]

Kotlin抽象受保护的财产

如果我有以下类层次结构: abstract class Foo() { abstract protected val thing: T } class Baz : Foo { override protected val thing: T = … } 我对Baz ::事情说: 冗余可见性修改器 这是否意味着编译器将其视为受保护的,而不需要指定或者必须公开?

清除使用CLion在Kotlin中导入本机C库的步骤

我正在尝试Kotlin Native,它似乎工作。 但是给出添加C库的页面还不够清楚。 例如可以说我想导入libcurl和libxml来制作一个webscraper。 或者说想用Qt来制作GUI。 我如何将这个库导入Clion中。 请给出明确的步骤。 我想把这个问题作为一个简单的wiki,就像我自己和其他新的本地人一样。 为什么我需要像Kotlin本地指南中提到的那样在Linux中安装库SO? 没有足够的添加源代码。 编辑: https : //github.com/JetBrains/kotlin-native/blob/master/LIBRARIES.md First lets create a library: $ cinterop -h /usr/include/math.h -pkg libc.math -o math 问:我不能只使用gradle进行依赖管理吗? 问:为什么要传递libc.math ? 我应该为libcurl等其他库传递什么? 问:什么是-pkg ? 我假设-o math是klib的名字。

RxJava和Kotlin数据类copy()操作中的线程切换成本

我的问题是关于操作的成本,特别是Kotlin 数据类 copy()操作和RxJava observeOn()线程切换的成本。 我有一个系统产生的事件,让我们说Schedulers.mainThread 。 事件是Kotlin 数据类 。 接下来是业务逻辑,最后链通过copy()操作产生新的数据类 。 所有结果都必须在Schedulers.mainThread 。 所以,一条连锁店会是这样的: eventSource() //Events are produced on Schedulers.mainThread .observeOn(Schedulers.computation) .map { event -> other business logic event.copy(…) } .observeOn(Schedulers.mainThread) .subscribe(eventConsumer) 因此,如果事件类有15个字段,那么这个问题是值得通过observeOn来切换调度observeOn ,例如copy() 。 应该提到的是, Schedulers.mainThread是用于渲染UI的线程,最好是空置的。

AWS Lambda Java / Kotlin发送消息给SQS

我一直在使用Kotlin创建一个AWS Lambda函数。 该函数运行良好,但似乎无法发送SQS消息到FIFO队列。 我在Cloudwatch中收到以下消息: REPORT RequestId: 9119da93-e775-11e7-820a-5bbbb7403f93 Duration: 10010.16 ms Billed Duration: 10000 ms Memory Size: 128 MB Max Memory Used: 54 MB 2017-12-23T00:09:49.483Z 9119da93-e775-11e7-820a-5bbbb7403f93 Task timed out after 10.01 seconds 我已经重写了我的代码使用节点JS,它执行良好,我有相关的权限设置的lambda函数,通过控制台权限模拟器测试好措施,把消息放在指定的队列。 由于它在Node中完全正常工作,所以我不得不假定我的Java / Kotlin版本有问题。 如果我删除下面的代码,该function到达结束,并返回正常。 我已经尝试了各种方法来创建客户端(包括不推荐使用的选项)和EnvironmentVariableCredentialsProvider和DefaultAWSCredentialsProviderChain 。 我也尝试增加超时到20秒,但是这也没有任何区别。 任何想法,将不胜感激! val sqs = AmazonSQSClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(DefaultAWSCredentialsProviderChain()) .build() val sendMessageRequest = SendMessageRequest() .withMessageDeduplicationId(“deduplicationId”) .withMessageGroupId(“test”) .withQueueUrl(“https://sqs.us-west-2.amazonaws.com/00000000/test.fifo”) .withMessageBody(“test”) […]

Kotlin中的Wicket NumberTextField在提交时抛出ClassCastException

我在Kotlin(1.1.0)的Wicket(8.0.0-M4)NumberTextField中遇到了一些问题。 我的精简表单看起来像这样: class Test : AbstractWebPage() { val housenumberModel: Model = Model() val housenumber = NumberTextField(“housenumberModel”, housenumberModel) val form: Form = object : Form(“adressForm”) {} override fun onInitialize() { super.onInitialize() form.add(housenumber.setRequired(false)) form.add(object : SubmitLink(“submit”) { override fun onSubmit() { super.onSubmit() println(housenumberModel.`object`) // this is line 28 } }) add(form) } } 提交表单后,我得到以下堆栈跟踪: java.lang.ClassCastException:无法将java.lang.String转换为com.mycompany.test.pages.Test处的java.lang.Number $ onInitialize […]

在Kotlin中有一个简单的方法来获得_id的对象吗?

我是一个Kotlin的初学者,我希望在下面的数据结构中通过_id得到一个对象,所以我写了一个fun getMDetailByID(aMDetailsList:MDetailsList, _id:Long)…这是一个传统的方法。 但是我觉得这个乐趣太复杂了,有没有简单的方法呢? 如使用Lambdaexpression式。 class UIMain : AppCompatActivity() { data class BluetoothDef(val Status:Boolean=false) data class WiFiDef(val Name:String, val Status:Boolean=false) data class MDetail ( val _id: Long, val bluetooth: BluetoothDef, val wiFi:WiFiDef ) data class MDetailsList(val mListMetail: MutableList) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.layout_main) var mBluetoothDef1=BluetoothDef() var mWiFiDef1=WiFiDef(“MyConnect 1”,true) var aMDetail1= MDetail(5L,mBluetoothDef1,mWiFiDef1) var mBluetoothDef2=BluetoothDef(true) […]

有没有办法在Kotlin的数据类中嵌套一个枚举?

有没有办法在Kotlin的数据类中嵌套一个枚举? data class D(val a:Any) { enum class E {F,G} … } 或者在函数中声明它内联? fun foo() { enum class E {F,G} doSomething() } 我无法find允许声明枚举的规则的文档。

科特林代码重构

我有一个function是检查是否有搜索条件。 var currentStatus = MutableLiveData<List>() private var sellerIds: List? = null private var subSellerIds: List? = null private var partnerIds: List? = null private var productTypeIds: List? = null private var brunchIds: List? = null private var contractDateFrom: String? = null private var contractDateTo: String? = null private var completeDateFrom: String? = null private var […]

在使用arrayOfNulls时,是否可以删除Kotlin中未经检查的转换?

在Kotlin开发简单的主要队列的同时,我碰到了一个没有经过检查的警告,我无法摆脱: private val pq: Array = arrayOfNulls<Comparable>(capacity) as Array 以下是Kotlin优先级队列的完整源代码: class UnorderedMaxPQ<T : Comparable>(capacity: Int) { private val pq: Array = arrayOfNulls<Comparable>(capacity) as Array private var size = 0 fun isEmpty() = size == 0 fun size() = size fun insert(x: T) { pq[size++] = x } fun delMax(): T { var max = 0 […]