如何从地图返回非空项目的列表映射?

我有一段代码如下(简化来解释这个问题)。 从rawData中,我想过滤出那些没有在converter器中提供的converter器types,然后剩余的将data转换为listitem data class RawData(val type: String, val data: Data) interface Converter { fun convert(data: Data): ListItem } fun transform(): List { val providerTypeMap = modelViewProvider.associateBy({it.type}, {it}) return rawDataList.filter { converter[it.type] != null }.map { converter[it.type]?.create(it.data) ?: object: ListItem {} } } 注意:我希望返回types为List而不是List 。 为了做到这一点,我需要有这条线 converter[it.type]?.create(it.data) ?: object: ListItem {} 哪个给我? 和?:是非常难看的,因为我们知道那时候,我们已经过滤了,只保留那个converter[it.type] != null 有没有办法让我摆脱? […]

尽量减少class级中的代码重复?

我正在使用下面的类通过使用套接字发送数据到我们的消息队列以同步的方式或异步的方式,如下所示。 到目前为止,我在下面的课程中复制了很多代码。 我有以下5个方法用于同步或异步发送数据,我相信可能有更好的方法来重写这些方法。 public class SendRecord { private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(2); private final Cache cache = CacheBuilder .newBuilder() .maximumSize(2000000) .concurrencyLevel(100).build(); private static class Holder { private static final SendRecord INSTANCE = new SendRecord(); } public static SendRecord getInstance() { return Holder.INSTANCE; } private SendRecord() { executorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { […]

如何用一个复合types的数组来调用postgres函数

我正在寻找如何调用具有参数的复合types的postgres函数的建议。 问过类似的问题,但我find了一个满意的答案。 我有以下复合types: CREATE TYPE collect.event_record AS ( event_type integer , event_timestamp timestamp without time zone , event_data text , event_import_id integer ); 我有以下function: CREATE OR REPLACE FUNCTION collect.insert_events( fail_on_duplicates boolean, source_public_id text, event_records collect.event_record[]) RETURNS integer AS … 在postgres方面一切似乎工作正常。 现在我只需要从java / kotlin中调用它。 我们使用这个版本的postgres驱动程序: compile group: “org.postgresql”, name: “postgresql”, version: “9.4.1212” 在PreparedStatement有一个方法,似乎是我在找什么: void setArray (int […]

如何在不使用SDK的情况下向Google提出操作许可?

我想知道用户的名称,但是我不能使用nodejs sdk,因为我使用另一种语言。 我怎样才能请求许可? 我宁愿与正常的JSON响应的方式。

Android设备版本的React-Native项目没有更新,即使模拟器是

React-Native有一个很奇怪的现象。 我一直在使用iOS simulator但是想在我的Android手机上测试我的代码,这是一款Huawei Nexus 6P 。 即使从6P删除旧的应用程序后,我的代码的旧版本运行。 是的,我已经更新了index.android.js以匹配index.ios.js ,为了certificate它应该起作用, 6P的Genymotion模拟器运行正确的代码。 我甚至测试了一个我正在构建的Kotlin Android项目,当我在6P上运行这个项目时,代码的任何更新都按预期显示。 我也会提到,虽然可能不相关,但是我最近(在这个问题之前)有一个单独的问题,导致我在CD入到我的项目的Android文件夹中运行sudo ./gradlew clean ,如本答案中所述 。 这并没有解决我的问题,但我不知道有什么“腐化”我的项目的Gradle ? 有没有办法我可以“重新初始化”或什么? 我真的很难理解这里有什么可能是错的,特别是因为模拟器更新正确。 任何帮助,欢迎! 更新 : 一个有用的提示,以清除从bennygenel的应用程序的缓存后,我做了以下和bennygenel react-native run-android但可悲的是我仍然有同样的问题: 清除缓存的应用程序 清除数据 强制停止应用程序 卸载应用程序 这真的很奇怪!

如何实例化在Kotlin中实现接口的匿名类

在Java中,实例化一个接口对象就像new Interface()一样简单,并覆盖所有必需的函数,如下所示,在AnimationListener private void doingSomething(Context context) { Animation animation = AnimationUtils.loadAnimation(context, android.R.anim.fade_in); animation.setAnimationListener(new Animation.AnimationListener() { // All the other override functions }); } 但是,当我们键入Kotlin时 private fun doingSomething(context: Context) { val animation = AnimationUtils.loadAnimation(context, android.R.anim.fade_in) animation.setAnimationListener(Animation.AnimationListener(){ // All the other override functions }) } 它的错误投诉未解决参考AnimationListener。

Kotlin:访问when语句的参数

有没有办法获得我传入when语句的expression式的值? 在我的应用程序中,我有一个这样的KeyListener _content.addKeyListener(object : KeyAdapter() { override fun keyPressed(e: KeyEvent?) = when(e?.keyCode) { KeyEvent.VK_T -> mainWindow.enterTrainingState() KeyEvent.VK_P -> mainWindow.enterPlayState() KeyEvent.VK_E -> mainWindow.close() else -> println(e?.keyCode) } }) Kotlin有一个整洁的语法来访问e?.keyCode ? 我真的不想重复这个expression。

在Android Studio 3.0中,Kapt不适用于AutoValue

Gradle依赖关系: compile ‘com.google.dagger:dagger:2.9’ annotationProcessor ‘com.google.dagger:dagger-compiler:2.9’ kapt ‘com.google.dagger:dagger-compiler:2.9’ provided “com.google.auto.value:auto-value:1.4.1” annotationProcessor “com.google.auto.value:auto-value:1.4.1” 得到这个堆栈跟踪: :presentation:kaptDevDebugKotlin e: @AutoValue public abstract class Categories implements CategoriesModel{ e: ^ e: symbol: class CategoriesModel e: path/Categories.java:13: error: cannot find symbol w: warning: The following options were not recognized by any processor: ‘[kapt.kotlin.generated]’ w: e: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: Error while annotation processing at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:90) at […]

androidTest uiautomator库中的突然未解决的参考

在使用uiautomator库编写测试测试时,一切都运行良好,直到不知何故uiautomator库相关的导入都不起作用。 我有一个稳定版本的测试工作在一个分支,甚至切换到该分支仍然没有任何工作。 而在稳定的分支(以防万一)我多次尝试以下事情和组合: 与Gradle文件同步项目 清洁/重建 无效并重新启动 重启机器 git clean -fdx ,然后3。 下载了最新的稳定AS 3.0.1,再次克隆项目,没有导入任何设置,然后是1,2,3。 从gradle中删除测试相关的库,然后1,2,3,然后再添加它们,然后是1,2,3。 作为一个简单的说明:我在Kotlin编写测试,但是这不应该使它有所不同,因为它之前工作正常,并且import参考确定。 虽然从android.support.test.uiautomator导入的任何类都没有解决,测试运行良好,他们使用uiatomator的function按预期工作。 我看不出为什么会这么不负责任。 (我已经花了超过10个小时)。 有谁知道正确的方法来解决引用?

字符串插值在Kotlin中如何工作?

Kotlin编译器翻译”Hello, $name!” 使用类似的东西 java.lang.String.format(“Hello, %s!”, name) 还是有其他一些机制? 如果我有这样的课,例如: class Client { val firstName: String val lastName: String val fullName: String get() = “$firstName $lastName” } 这个getter会返回一个缓存的字符串,还是会尝试建立一个新的字符串? 我应该使用lazyOf委托吗? 我知道不会有性能问题,除非会有数百万的fullName调用,但除了如何使用它外,我还没有find有关这个function的文档。