Kotlin将hex字符串解析为长

我开始在Kotlin工作,我需要解析一个hex字符串到一个长,在Java中可以完成 Long.parseLong(“ED05265A”, 16); 虽然我可以find,但我在科特林找不到任何东西 val i = “2”.toLong() 这不是我正在寻找的! 在我从头开始写任何东西之前,有没有内置的函数?

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 […]

通过动态分派委派派生类方法

鉴于下面的情况,哪里有一些基类应该简单地委托给派生类,那么为什么派生类中的两个apply()方法永远不会被调用? 为了演示:在main函数中,我将调用两个事件来apply 。 在抽象类中,我将apply这两个事件。 在基类中有一个通用的apply(Event)函数,但是它应该被忽略,并且通过动态调度去派生类中的apply(EventOne)和apply(EventTwo)方法。 我也尝试过每个单独的apply方法返回自己,而applyFromHistory函数使用fold来代替,但得到了相同的结果。 fun main(args: Array) { val subject = SomeAggregate() subject.applyFromHistory(listOf( EventOne(123), EventTwo(“foobar”) )) } sealed class Event data class EventOne(val id: Int) : Event() data class EventTwo(val content: String) : Event() abstract class AggregateRoot( private val events : MutableList = mutableListOf() ) { fun applyFromHistory(history: List) { history.forEach { apply(it) […]

委托给初始化属性时,“variables必须初始化”错误

object Foo : CharSequence by Foo.X { val X = “” } 产生 Variable ‘X’ must be initialized 但它是! 而代码应该翻译成类似的东西 object Foo : CharSequence { val X = “” override val length get() = Foo.X.length override operator fun get(index: Int): Char = Foo.X[index] override fun subSequence(startIndex: Int, endIndex: Int) = Foo.X.subSequence(startIndex, endIndex) } 这工作得很好。 这个错误的原因是什么,是否有解决方法? […]

Java是否支持默认参数值?

我遇到了一些具有以下结构的Java代码: public MyParameterizedFunction(String param1, int param2) { this(param1, param2, false); } public MyParameterizedFunction(String param1, int param2, boolean param3) { //use all three parameters here } 我知道在C ++中,我可以给参数分配一个默认值。 例如: void MyParameterizedFunction(String param1, int param2, bool param3=false); Java支持这种语法吗? 有没有任何理由为什么这两个步骤的语法是可取的?

kotlin-android null不能转换为非nulltypeskotlin.String

我无法同步我的项目,因为: Caused by: kotlin.TypeCastException: null cannot be cast to non-null type kotlin.String at org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapperKt.loadKotlinVersionFromResource(KotlinPluginWrapper.kt:89) at org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapperKt.access$loadKotlinVersionFromResource(KotlinPluginWrapper.kt:1) at org.jetbrains.kotlin.gradle.plugin.KotlinBasePluginWrapper.(KotlinPluginWrapper.kt:39) at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper.(KotlinPluginWrapper.kt:70) at org.gradle.api.internal.DependencyInjectingInstantiator.newInstance(DependencyInjectingInstantiator.java:81) at org.gradle.api.internal.plugins.DefaultPluginManager.instantiatePlugin(DefaultPluginManager.java:72) … 126 more 我更新Kotlin插件到1.1.61后发生这种情况

Spring JPA查询总是使用序列扫描而不是索引扫描

我有一个简单的查询 @Query(value = “select * from some_table where consumer_id=:consumerId and store_id=:storeId and cancelled_at is null”, nativeQuery = true) fun checkIfNewConsumer(consumerId: BigInteger, storeId: BigInteger): List 当我运行查询时,直接对超过3000万行的表进行解释 Index Scan using select_index on some_table (cost=0.56..8.59 rows=1 width=86) (actual time=0.015..0.015 rows=0 loops=1) Index Cond: ((consumer_id = 1234) AND (store_id = 4) AND (cancelled_at IS NULL)) Planning time: 0.130 ms […]

Kotlingenerics和可空类types

如何处理Kotlin中的可空generics类? generics的示例函数: fun calculateStuff(valueType: Class, defaultValue: I): I { // do some work return defaultValue; } 这是一个调用函数(注意calculateStuff(…)的第二个参数) fun doStuff() { // works fine! val myVar1 = calculateStuff(String::class.java, “”) // FAIL (null is not accepted… Error: “Cannot infer type parameter I in….”) val myVar2 = calculateStuff(String::class.java, null) } 解决方法(将返回types更改为I?AND defaultValue为I): fun calculateStuff(valueType: Class, defaultValue: I?): I? […]

使用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) { […]