访问Kotlin实体的属性

我是Kotlin的新手,非常抱歉,如果我没有正确expression概念。 我有一个实体的实例 [TestEntity(applicationId=1, timestamp=2018-01-24T18:40:30, issueState=MA, product=test, status=sold, paymentMode=VISA, premium=null)] 我正在编写一个服务,将采取这些键,并使用它们来创建报告的标题。 这些键可能会根据用户试图生成的报告的types而改变,这将对将被实例化的实体产生影响。 我想能够遍历这个实体,以便我可以创建一个数组用于标题。 任何想法,我如何做到这一点?

将源文件附加到kotlin库项目不会显示在AS中

我想把源代码附加到一个kotlin库项目,看起来我成功了,因为我现在有了源代码jar: https://jitpack.io/com/github/walleth/kethereum/bip44/0.21/ 之前的版本没有出口的来源 – 所以我认为这是成功的。 https://jitpack.io/com/github/walleth/kethereum/bip44/0.20/ 不幸的是,AS不显示来源。 我是这样产生的: allprojects { repositories { jcenter() maven { url ‘https://jitpack.io’ } } apply plugin: “kotlin” apply plugin: “jacoco” apply plugin: “maven” apply plugin: “com.github.ben-manes.versions” dependencies { compile “org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version” testCompile ‘org.assertj:assertj-core:3.8.0’ testCompile ‘junit:junit:4.12’ } task sourcesJar(type: Jar, dependsOn: classes) { classifier = ‘sources’ from sourceSets.main.allSource } task javadocJar(type: Jar, […]

使用kotlin创建一个数据库工厂

所以我正在尝试用kotlin创建一个MongoDB工厂…但是我想我并不是很了解companion object的概念,因为我甚至不能编译它: package org.jgmanzano.storage import com.mongodb.MongoClient import com.mongodb.MongoClientURI import com.mongodb.client.MongoDatabase class MongoConnectionFactory(private val connectionURI: String) { private var database: MongoDatabase init { val connectionString = MongoClientURI(connectionURI) val mongoClient = MongoClient(connectionString) database = mongoClient.getDatabase(“paybotDB”) } companion object { fun getDatabase() : MongoDatabase { return database } } } 你们将如何实现这一目标? 我的想法是创建在Java中是一种工厂方法 。 我似乎无法得到正确的语法。 此外,这将是一个DB连接工厂的正确方法?

Kotlin / Android:返回可以从’when’

switch Kotlin的替代方法是when 。 因此,在回收视图适配器内部,当我返回视图types时,我使用以下when : override fun getItemViewType(position: Int): Int { when (position) { 0 -> return ItemViewType.TITLE.type 1 -> return ItemViewType.SUBTITLE.type 2 -> return ItemViewType.ITEM.type else -> return -1 } } 但是,上面的语句发送了我们的警告信息Return can be lifted out of ‘when’ 。 有谁知道什么时候可以使用正确的方法? 应该怎么办才能解决上述情况?

在Kotlin使用Android获取和设置器

我是Kotlin的新手,在吸气剂和吸附剂方面工作。 我正在设置我的字符串值的一个数据类。 我有2个活动,从ActivityA我正在设置一个数据,我想要在其他ActivityB。 我如何从我的ActivityB中的数据类获取数据? 我的代码片段如下: 数据类HelperMethods: data class HelperMethods(val name: String, val publisher: String) ActivityA我正在设置数据: val userName = HelperMethods(“abc”,”efg”) 我想从我的ActivityB中的数据类中获取这些数据。

如何在kotlin-android编译之前处理重复的类?

我做了一个图书馆。 它将通过apt在几个库中以不同的方法生成相同的类。 我写了一个gradle插件,通过将一个Transform添加到android build插件的扩展中来合并重复的类。 它在java项目中运行良好,但是在Kotlin项目中,在我的Transform工作之前出现了一个错误,这个错误是由重复的类覆盖导致的,所以生成类错过了许多方法。 我想在kotlin编译之前转换代码。 我怎样才能做到这一点。

NPE使用glfwWindowShouldClose(Kotlin)

所以我刚刚开始使用本教程的一个基本的LWJGL 3程序。 我已经把所有的代码转换成Kotlin来使它工作,一切似乎都很好。 直到我到了最后他利用glfwWindowShouldClose(window) 。 我按照他所展示的方式尝试了它,并使用自己的函数调用自己的方法来替换runningvariables。 我甚至尝试用true代替它。 不幸的是,它似乎没有工作。 澄清,我的意思是,当我在我的项目中的任何地方使用glfwWindowShouldClose(window) ,任何对LWJGL函数的调用都会导致一个NPE,即使是与它无关的函数: Exception in thread “thingy” java.lang.NullPointerException at org.lwjgl.system.Checks.check(Checks.java:98) at org.lwjgl.glfw.GLFW.glfwSwapBuffers(GLFW.java:4206) at main.Window.render(main.kt:39) at main.Window.run(main.kt:15) at java.lang.Thread.run(Thread.java:745) 我用这个错误例子的代码在这里: class Window: Runnable { private val thread = Thread(this, “thingy”) private val window: Long override fun run() { while (true) { update() render() } } init { thread.start(); window […]

如何用Kotlinreflection改变成员字段?

我正在从Java移植到Kotlin。 这个类声明了数百个对象。 每个对象都有一个名称属性,它与对象声明的variables名称相同。 Javareflection允许通过reflection使用声明的名称来设置对象成员name 。 只需要在数百个构造函数中保存一个参数。 我试图在Kotlin做同样的事情,但不知道如何做属性设置。 这里是一些简化的测试代码: package myPackage import kotlin.reflect.full.companionObject import kotlin.reflect.full.declaredMemberProperties class MyTestObject() { var name: String = “NotInitialized” companion object { val Anton = MyTestObject() val Berta = MyTestObject() val Caesar = MyTestObject() } } fun main(args : Array) { println(MyTestObject.Anton.name) // name not yet initialized // Initialize ‘name’ with the […]

将inheritance的Java bean转换为Kotlin

在当前的Java类中,我们有两个Java bean Clazz1和Clazz2,它们都扩展了超类SuperClazz。 我们也有一个列表,我们迭代超级类的条目,可以是Clazz1或Clazz2: List entries; 我们现在需要将代码转换为Kotlin,但由于数据类不支持inheritance,所以我们不能确定解决这个问题的最佳方式,那么我们只需创建一个带variables的标准Kotlin类,扩展超类,然后手工制作getter -setters? 或者,有没有更好的方法来做到这一点?

Kotlin内联函数和Android方法计数

我想了解内联函数如何影响classes.dex和方法的数量。 从我的理解来看,内联函数应该有比方法计数少的开销。 然而,APK分析器给了我相反的结果。 我写了一个小测试来检查这个。 InlineFunction.kt文件: inline fun inlined(block: () -> Unit) { block() } 和MainActivity.kt文件: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) inlined { println(“Inlined”) } } } 从生成的代码的角度来看,它看起来很清楚: public final class MainActivity extends AppCompatActivity { private HashMap _$_findViewCache; protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); String var2 = “Inlined”; System.out.println(var2); […]