Tag: kotlin

如何通过reflection运行挂起方法?

有一个协程块可以运行暂停function。 但我通过reflectioninvoke函数。 这是java风格的调用,显然一个简单的调用是行不通的。 有没有办法异步运行reflection的方法? 如何等待这个方法? import kotlin.coroutines.experimental.* class TestClass(val InString: String) { suspend fun printString() { println(InString) } } fun launch(context: CoroutineContext, block: suspend () -> Unit) = block.startCoroutine(StandaloneCoroutine(context)) private class StandaloneCoroutine(override val context: CoroutineContext): Continuation { override fun resume(value: Unit) {} override fun resumeWithException(exception: Throwable) { val currentThread = Thread.currentThread() currentThread.uncaughtExceptionHandler.uncaughtException(currentThread, exception) } } […]

Firebase-Firestore不能同时加载2个文档的信息

早上好 所以,我可以从我的Firebase文档和集合中加载信息,在某种程度上… 当我的collections有1个文件,一切都顺利。 当它有一个以上的文件,那么,应用程序中断。 所以,我有这个: db.collection(“KitListCategorie”).get().addOnSuccessListener { snapshot -> for (document1 in snapshot.documents) { val data1 = document1.data val weights = data1[“categoryName”] as String val misc = data1[“categoryName”] as String categorySpinnerArray.add(weights) categorySpinnerArray.add(misc) } categorySpinnerArrayAdapter.notifyDataSetChanged() } 对于此Firestore设置: https : //imgur.com/a/pmBcE 然后我得到这个错误: kotlin.TypeCastException: null cannot be cast to non-null type kotlin.String 我究竟做错了什么? 谢谢

登录Kotlin的习惯性的方式

Kotlin没有Java中使用的静态字段的相同概念。 在Java中,一般公认的记录方式是: public class Foo { private static final Logger LOG = LoggerFactory.getLogger(Foo.class); } 问题是在Kotlin中执行日志记录的惯用方法是什么?

@Throws在目标是属性时不起作用

在看这个问题的时候 ,我注意到将@Throws应用到get或set use-site没有任何作用。 此外, @Throws 的唯一有效目标是AnnotationTarget.FUNCTION , AnnotationTarget.PROPERTY_GETTER , AnnotationTarget.PROPERTY_SETTER和AnnotationTarget.CONSTRUCTOR 。 其他注释,如JPA批注和Deprecated工作正常,并适用于该方法! 这是奇怪的行为。 为了演示,我用Java创建了一个简单的抽象类,有一个构造函数,一个方法和一个get方法。 public abstract class JavaAbstractClass { @Deprecated @NotNull public abstract String getString() throws IOException; public abstract void setString(@NotNull String string) throws IOException; public abstract void throwsFunction() throws IOException; public JavaAbstractClass() throws IOException { } } 正如你所看到的,每个方法/构造函数都被标记为抛出IOException 。 但是,当我尝试在Kotlin中编写一个等同的类,并用互斥标记相应的方法时,生成的getString和setString方法没有throws子句。 abstract class KotlinAbstractClass @Throws(IOException::class) […]

Kotlintypes不匹配编译错误:需要成功,findMyError

我遇到了以下代码不能在kotlin中编译的问题。 // StateModel.kt sealed class StateModel class Loading : StateModel() data class Success(val data: T) : StateModel() data class MyError(val message: String) : StateModel() // StateModelTransformer.kt class StateModelTransformer : FlowableTransformer { override fun apply(upstream: Flowable): Publisher { return upstream .map { data -> Success(data) } .onErrorReturn { error -> MyError(error.message) // compile error, Type mismatch, […]

AWS Lambda出现意外的行为

我做了什么 我使用aws-kotlin-jvm-maven模板创建了一个使用无服务器cli的项目。 之后,我用这种方式编辑了我的serverless.yml模板: service: test provider: name: aws runtime: java8 region: eu-west-1 package: artifact: target/test-1.0.0.jar functions: hello: handler: com.example.Handler events: – schedule: rate(2 minutes) 我已经这样编辑我的Handler: class Handler:RequestHandler<Map, ApiGatewayResponse> { override fun handleRequest(input:Map, context:Context):ApiGatewayResponse { BasicConfigurator.configure() LOG.info(“Hello, World!”) return ApiGatewayResponse() } companion object { private val LOG = Logger.getLogger(Handler::class.java) } } 我期待着我的Lambda每两分钟运行一次,记录一个“Hello,World!” 在CloudWatch上,每2分钟一次。 我的问题 我在cloudWatch日志中find的是以下内容: 第一轮:“你好,世界!” […]

Kotlin和Dagger 2:使用Provider类的问题

在网上冲浪之后,似乎没有类似的问题,它正在吃掉我。 在学习使用Dagger 2进行dependency injection的过程中,我试图将Java的一个例子翻译成Kotlin。 该项目在Java编译罚款,但使用Kotlin,不喜欢javax.inject.Provider类,并无法建立。 什么不见​​了? 这里的提供者类的使用是否对Kotlin不正确? 这是Gradle事件日志中的错误: repositorytrends\custom_implementations\RepoTrendsAppComponent.java:8: error: java.util.Map<java.lang.Class,? extends javax.inject.Provider<dagger.android.AndroidInjector.Factory>> cannot be provided without an @Provides-annotated method. 这是有问题的文件。 内部构造函数的参数(Map)是成功构建的决定因素: class ActivityInjector @Inject internal constructor(private val activityInjectors: Map<Class, Provider<AndroidInjector.Factory>>){ private val cache = HashMap<String, AndroidInjector>() internal fun inject(activity: Activity) { if (activity !is RepoTrendActivity) { throw IllegalArgumentException(“Activity must extend BaseActivity”) } val instanceId […]

使用LiveData和数据绑定

随着Android体系结构组件的稳定,我开始将所有的基本ViewModel更新为ViewModel的新实现。 在我的理解中,建议使用LiveData来保存Model类,因为它更好地处理生命周期。 我喜欢使用Data Binding因为它使得代码在Java / Kotlin方面更加清晰,并且不需要“观察”值更改来更新UI。 然而,如果Model (或ViewModel)扩展了BaseObservable而LiveData则不扩展, LiveData使用Data Binding的布局只能监视数据的变化。 我明白LiveData的主要目标之一是观察和更新用户界面编程,但对于简单的更新, Data Binding是非常有用的。 这个问题已经被报道( GitHub和堆栈溢出 ),首先是说1.0版本会有,现在说这个function正在开发中。 为了同时使用LiveData和Data Binding ,我创建了一个扩展BaseObservable类的非常简单的实现: import android.arch.lifecycle.LiveData import android.arch.lifecycle.MutableLiveData import android.databinding.BaseObservable class ObservableMutableLiveData() : BaseObservable() { private var data: MutableLiveData = MutableLiveData() constructor(data: T) : this() { this.data.value = data } public fun set(value: T) { if (value != data.value) { […]

为什么可空数字不保存身份

在kotlin nullable价值观不是保存身份而是平等, val a: Int = 10000 val boxedA: Int? = a val anotherBoxedA: Int? = a print(boxedA === anotherBoxedA) // !!!Prints ‘false’!!! print(boxedA == anotherBoxedA) // Prints ‘true’ 我只是想知道为什么这是不同的?

Kotlin KDoc:文档?

我在 这里看到, 在这里和那里引用了KDoc,相当于Kotlin的JavaDoc实用程序。 但是,我找不到有关如何使用它的任何文档,更不用说如何定制它或将其集成到Maven或Gradle中。 我知道Kotlin API文档是使用KDoc生成的,因为页面源代码有以下的HTML注释: 那么,有没有关于如何使用KDoc的文档呢?