草庐IT

kotlin_module

全部标签

23:kotlin类和对象 -- 内联值类(Inline value classes)

有时,将一个值包装在一个类中可以创建一个更具领域特定类型的类。然而,由于额外的堆分配,这会引入运行时开销。此外,如果包装的类型是原始类型,性能损失是显著的,因为原始类型通常由运行时进行了大量优化,而它们的包装类没有得到任何特殊处理。为了解决这些问题,kotlin引入了一种特殊类型的类,称为内联类(inlineclass)。内联类是值类(value-basedclasses)的一个子集。它们没有身份,只能持有值。要声明一个内联类,请在类名之前使用value修饰符valueclassPassword(privatevals:String)要在JVM后端声明一个内联类,可以在类声明之前使用value

java - 为什么我不能在 Kotlin 中访问父类(super class)的枚举?

我正在将JavaAndroid项目转换为Kotlin。我正在使用API.AI'sclient,它有两个AIConfiguration类:父类(superclass)packageai.api;publicclassAIConfigurationimplementsCloneable{publicstaticenumSupportedLanguages{English("en"),//...}//...}子类packageai.api.android;publicclassAIConfigurationextendsai.api.AIConfiguration{publicenumRec

android - 无法使用 Kotlin 访问 EditText 或其他 UI 组件

我正在使用AndroidStudio3.0RC2和Kotlin。当我尝试访问UI组件时,除非我先编写findViewById,否则应用程序会崩溃。我认为Kotlin应该摆脱必须编写findViewById行?UI是一个fragment,我正在尝试从相同的fragment代码进行访问。有没有办法不必写findViewById?这些行有效:varuserNameField=view?.findViewById(R.id.userNameTextField)asEditTextuserNameField.setText("helloworld")如果没有findViewById行,该行将无法

android - 如何在 Android 中模拟 Kotlin 的 kotlinx.android.synthetic View

我有一个用Kotlin编写的fragment。我使用导入布局Viewimportkotlinx.android.synthetic.main.my_fragment_layout.在我的一种方法中,我设置了TextView的文本:funsetViews(){myTextView.text="Hello"//InJavaIwouldhaveused://(getView().findViewById(R.id.myTextView)).setText("Hello");}在我的纯JVM单元测试中,我想使用Mockito测试此方法。例如,如果上面的方法是用java编写的,我可以这样做:pu

android - Kotlin Dagger2 找不到符号 ApplicationModule_ProvideApplicationFactory

我正在尝试将Dagger2与Kotlin一起使用,但今天尝试编译时遇到此错误:Error:Executionfailedfortask':app:compileDebugJavaWithJavac'.Error:(5,43)error:cannotfindsymbolclassApplicationModule_ProvideApplicationFactory(应用程序)Build.gradleapplyplugin:'com.android.application'applyplugin:'kotlin-android'applyplugin:'kotlin-android-ext

android - Kotlin object/singleton 的方法是否同步?

将@Synchronized注释添加到对象的方法以使它们成为原子方法是否有意义,或者不需要它?例如:objectSingleton{varfield1:Int=0privatesetvarfield2:Int=0privateset@SynchronizedfunupdateFields(f1:Int,f2:Int){field1=f1field2=f2}}我想确保当我从其他对象读取它们时所有字段都被更新。我应该保留@Synchronized注释吗? 最佳答案 如果你想实现@Synchronized您需要明确添加语义-如您的示例所示

java - Kotlin androidTest : Tests ran to completion. 空测试套件

我正在尝试将我的测试从java转换为kotlin。简单的单元测试翻译成功,像这样:classBindingUtilsTest{@Test@Throws(Exception::class)funtestConvertBooleanToVisibility_visible(){assertEquals(BindingUtils.convertBooleanToVisibility(true),View.VISIBLE)}}但是当我尝试运行androidTest时它失败并显示消息:“未找到测试”和TestrunningstartedTestsrantocompletion.Emptytest

解决 Error: Cannot find module ‘C:\Users\xxx\AppData\Roaming\npm\...\pnpm.cjs 问题

背景安装Nodejs到C盘,环境变量配置啥的都是默认的。安装pnpm,后续都能正常使用。。。某种原因我想卸载Nodejs并重装,中途我删过这个目录C:\Users\xxx\AppData\Roaming\npm\(npm下载依赖的默认安装目录)重装后环境变量也是配置到D盘等等。安装pnpm也是安装到了D盘Nodejs目录下,输入命令pnpm-v查看版本时报错。。。报错截图解决在用户目录下删除如图中的文件即可原因(可能)可能是我卸载Nodejs没卸载干净。。。有残留控制台输入pnpm-v查看版本号时它默认去C盘用户目录找pnpm,找不到。。。因为我重装了Nodejs,环境变量也是配置D盘Node

android - Kotlin 启动应用程序崩溃

我的应用程序是用kotlin构建的,这是我的build.gradle文件:compile"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"和我工作区的build.gradle文件:ext.kotlin_version='1.1.3-2'ext.kotlin_plugin_version='1.1.1'dependencies{classpath"io.realm:realm-gradle-plugin:3.4.0"classpath"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_

android - 具有 Room 持久性库的 Kotlin 委托(delegate)

我目前正在使用Kotlin开发一个新的Android应用程序。我尝试实现Room来存储数据,但我没有让它与Kotlin委托(delegate)一起工作。我创建了一个Identifier委托(delegate),以确保id在初始化后不会更改。委托(delegate)看起来像这样:classIdentifier:ReadWriteProperty{privatevarcurrentValue=-1LoverridefungetValue(thisRef:Any?,property:KProperty):Long{if(currentValue==-1L)throwIllegalStateE