我正在尝试为使用Jetty嵌入式实例的WebSocket服务器配置安全连接。 这是我如何配置的东西: import org.eclipse.jetty.http.HttpVersion import org.eclipse.jetty.server.* import org.eclipse.jetty.servlet.ServletContextHandler import org.eclipse.jetty.util.ssl.SslContextFactory import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer import org.slf4j.LoggerFactory import java.io.* import java.net.InetAddress import java.security.KeyStore import javax.net.ssl.KeyManagerFactory import javax.net.ssl.SSLContext import javax.net.ssl.TrustManagerFactory import javax.websocket.* import javax.websocket.server.ServerEndpoint (…) @Throws(Exception::class) private fun getServerConnector(): ServerConnector { val connector: ServerConnector if (USE_SSL) { LOG.info(“** Using SSL for all websocket connections **”) val contextFactory = SslContextFactory() […]
部分原因是我不能在Kotlin中创建没有参数的数据类,所以我使用object s来处理这些情况,例如 sealed class Node { object Leaf : Node() data class Branch(val left:Node, val right:Node) : Node() } 问题是,有时候,我最终得到了Leaf类的多个实例。 显然这不应该普遍发生,但是在使用一些框架和一些测试用例序列化和反序列化时会发生这种情况。 现在,你可能会争辩说我应该修正这些情况,但是很难知道它们可能在哪里,而不总是可能或者不希望修改框架的反序列化语义。 因此,我希望我的object的所有实例的行为都是相同的值,就像无参数data class (或Scala中的无参数的case class )一样。 到目前为止,我的最佳解决方案是以下内容,包括在我创建的每个可能遇到此问题的对象中: object SaneLeaf { override fun hashCode() = javaClass.hashCode() override fun equals(other: Any?) = other?.javaClass == javaClass } 很明显,这是冗长而且容易出错的,因为把这些实现抽象到一个接口似乎是不可能的。 如果对象不需要扩展另一个类,那么超类就可以工作,但情况往往不是这样。 或者,我可以用Nothing参数创建一个数据类。 但是,这似乎更像是一个黑客。 别人怎么处理这个问题呢? 是否有计划添加hashCode和equals实现对象的假定这些类的语义(所有实例应该是相同/相同的hashCode)?
我试图从我的应用程序中的Web服务器加载一些数据。 而且由于操作的异步性,无法预先知道需要多长时间才能完成。 为了提醒用户操作“正在进行”,我正在使用一个加载指示器。 这是一个使用kotlin和RxJava 2(我希望很清楚): fun loadData(){ showLoader() // show loading indicator Single.fromCallable { // http request logic goes here }.delay(1000, TimeUnit.MILLISECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(object : DisposableSingleObserver() { override fun onSuccess(data: String) { // do something hideLoader() // on success, hide indicator } override fun onError(e: Throwable) { displayErrorMessage() hideLoader() // on error hide indicator […]
我有一个Kotlin项目,我想把Kotlin警告视为错误。 我怎样才能做到这一点?
我正在Kotlin开发一些库,我没有find这个解决方案, 我怎么能解决这个问题, 这是说,创建扩展functionFile?.plus ,在Java中它的工作正常,但在Kotlin如何写这个代码? 先谢谢你。
在Kotlin中,像这样将一些Long值与0比较是微不足道的。 if (firstUnread == 0) { return } 但通常会发生此错误。 什么是比较这些值的最佳方法? 运算符“==”不能应用于“长”和“整数”
我在一个匿名的内部类中,想引用外部类的实例。 在Java中,可以使用.this前面的类名来解决歧义。 像: MainActivity.this 。 我怎样才能在Kotlin中实现相同? 因为编译器在抱怨’expression ‘this’ cannot be a selector(occur after a dot)’当我这样做的时候, ‘expression ‘this’ cannot be a selector(occur after a dot)’ 。 谢谢!
如果我有顶级对象声明 package com.example object MyObject {} 如何将字符串com.example.MyObject转换为对MyObject的引用?
给定任何接口I ,可以声明一个variables来保存对实现I的类C任何对象的引用: I i = new C(); 我想要做类似的事情。 给定两个接口,我想声明一个variables,该variables持有对实现这两个接口的类的任何对象的引用: interface Foo { void foo(); } interface Bar { void bar(); } class Humpty implements Foo, Bar { public void foo() { System.out.println(“Humpty.foo()”); } public void bar() { System.out.println(“Humpty.bar()”); } } class Dumpty implements Foo, Bar { public void foo() { System.out.println(“Dumpty.foo()”); } public void bar() […]
我目前正在使用Anko的doAsync来处理异步任务。 具体来说,我用它来解析数据对象的ArrayList的响应json ,如下所示: // Asynchronously parse server response doAsync { val itemlist = parseResponse(response) uiThread { Otto.INSTANCE.post(UpdateRedeemedVoucherViewsEvent(itemlist)) } } 大多数情况下,就像在Google Pixel(Android 8.0.0)上一样 ,这个工作很好。 我的对象被解析,并且Otto总线事件将在ui线程上被延迟。 但在极少数情况下,这个过程失败了。 到目前为止,我注意到ui线程调用不会在Galaxy S5 Mini(Android 5.1.1)上被触发。 虽然我的数据没有任何错误或exception被解析, uiThread括号中的代码片段将不会被执行。 到目前为止,我无法确定这种行为的任何理由。 没有logcat日志,什么都没有。 这个错误将不会出现。 有没有人与kotlin和/或Anko有相同或相似的问题? 更新:我自己find了一个解决方案,请参阅下面的答案以获得解释。