安卓 KOTLIN - 技术教程文章

Java-Kotlin中的okhttp3 RequestBody【代码】

我想发送这样的请求正文: 我该如何发送?我将其作为课程发送吗?"email":{"emailto":"foo@bar.com","emailfrom":"foo@bar.com","emailcc":"foo@bar.com","emailbcc":"foo@bar.com","emailsubject":"Subject","emailtag":"Information","emailtextbody":"---","attachments":[] }val formBody = FormBody.Builder().add("email", "Your message").build()val request = Request.Builder().url(url).post(formBody).addHeader("_Tok...

android-kotlin协程抛出java.lang.IllegalStateException:已经恢复,但是获得了值Location【代码】

一般来说,我对Kotlin协程和Android开发还很陌生.在游玩以了解其工作原理时,我遇到了一个似乎无法解决的错误. 通过基本活动,我尝试连接到googleApiClient.权限还可以.我希望使用kotlin协程以直接的方式从LocationManager获取位置更新,以便以后使用此Location对象.第一次更改模拟器中的位置可以正常工作,第二次更改位置时,它会崩溃除了这样的例外:FATAL EXCEPTION: mainProcess: com.link_value.eventlv, PID: 32404java.lang.Illeg...

java-Android Studio Kotlin错误与dataSnapshot.getValue【代码】

我在最近的项目中将Java文件转换为kotlin文件,问题是我在使用此代码时遇到错误:val map = dataSnapshot.getValue<Map<*, *>>(Map<*, *>::class.java)我在“ Map< *,*> :: class”下有一条红线,并且android studio说:Only classes are allowed on the left hand side of a class literal我应该用这个代码做什么?还有其他写方法吗? 这是一个相对的kotlin代码片段:val messageText = messageArea!!.text.toString()if (messageTe...

在Gradle项目中以Kotlin / Java代码获取版本【代码】

我有一个用kotlin编码的网络服务,并由gradle管理的构建/依赖关系等… 我想做一件简单的事情:当有人调用我的Web服务的版本REST端点时,它将返回该版本. 由于gradle已经使用build.gradle中的version属性处理了版本,我认为这很容易获得该值,但似乎并非如此.我已经在google上搜索了好几个小时,而且一切看起来都如此复杂. 知道如何处理版本的好方法吗? 这是我现在所拥有的: build.gradleversion = "1.0.0" ...StatusService.ktclass S...

在何处获取用于验证Java或Kotlin中的JWT令牌的公钥【代码】

我在后端使用Vertx的Kotlin,并且从One Login获得身份验证后,前端将JWT令牌转发给我.现在,我要确保令牌有效而不是假的(伪造的).如果我点击以下链接,它表示我需要一个公共密钥才能创建JWTAuth对象,该对象可用于调用身份验证进行验证.https://vertx.io/docs/vertx-auth-jwt/kotlin/ 我需要知道在哪里可以获取公钥?解决方法:我不了解OneLogin,但是从他们的文档中,我可以看到它们是SAML / OpenId Connect提供程序,因此可以轻松地从其配...

将Java Mockito测试转换为Kotlin【代码】

将以下有效的Java测试转换为Kotlin时遇到问题@Test public void testSomething() {Mockito.when(parkIdMappingRepository.save(Mockito.any(ParkIdMapping.class))).thenAnswer((Answer<ParkIdMapping>) invocation -> {ParkIdMapping mapping = invocation.getArgument(0);mapping.setId(100L);return mapping;});ParkIdMapping mapping = parkIdMappingRepository.save(new ParkIdMapping("123"));assertEquals(new Long(100L), ...

如何为Java调用者声明返回类型为“ void”的Kotlin函数?【代码】

我有一个完全用Kotlin编写的库,包括其公共API.现在,该库的用户使用Java,这里的问题是返回类型为Unit的Kotlin函数未编译为返回类型为void.结果是,对于有效无效的方法,Java端始终必须返回Unit.INSTANCE.可以避免这种情况吗? 例: Kotlin界面interface Foo{fun bar() }Java实现class FooImpl implements Foo{// should be public void bar()public Unit bar(){ return Unit.INSTANCE // ^^ implementations should not be forced to...

Kotlin无法识别Java保留关键字【代码】

我在Kotlin中使用Java的保留关键字时遇到问题.由于Kotlin中并非所有保留关键字都可用,因此Kotlin编译器无法(不是?)检测到仅Java中的保留关键字. 例如,以默认为例.它是Java保留的关键字.这意味着您不能执行以下操作.public class UserJava {public String default; }但是,它不是Kotlin中的保留关键字,因此您可以按以下方式使用它class UserKotlin {var default: String? = null }对于不懂Java的人,很难知道它们是保留关键字.由于Ko...

Kotlin-Java互操作不适用于varargs【代码】

我想抽象出在Android中获取资源的方法,因此编写了一个类ResourceProvider,该类实际上提供了资源:@Singleton class ResourceProvider @Inject constructor(private val context: Context) { fun getString(@StringRes id: Int): String {return context.getString(id) }fun getString(@StringRes id: Int, vararg formatArgs: Any): String {return context.getString(id, formatArgs) } ... }这里没什么特别的,只是在Context上调用...

将Java转换为Kotlin错误后实施代码【代码】

在我来这里之前,我已经尝试找到此问题是否在StackoverFlow上.我尝试将Java类转换为Kotlin,但Android Studio却做得不太好. 我尝试手动执行此操作,但未成功. 这是Java中的原始代码private static void appendHex(StringBuffer sb, byte b) {sb.append(HEX.charAt((b >> 4) & 0x0f)).append(HEX.charAt(b & 0x0f));}这是由Android Studio转换的代码private fun appendHex(sb: StringBuffer, b: Byte) {sb.append(HEX[b shr 4 and 0x0f...

java-Kotlin初始化对象【代码】

我有一个要扩展的基类,但想在普通Java构造函数所在的位置膨胀一个视图.class TextView(context: Context?) : ViewAbstractClass(context) 我不确定如何在Kotlin中进行此操作. Kotlin有哪些构造可让您执行对象的复杂初始化?解决方法:https://kotlinlang.org/docs/reference/classes.html#constructorsclass Customer(name: String) {init {logger.info("Customer initialized with value ${name}")} }

java-无法使用Kotlin在项目中设置Realm【代码】

我正在尝试使用Realm在Kotlin中建立一个测试项目.这是我的模型:open class Book : RealmObject() {// Standard getters & setters generated by your IDE…@PrimaryKeyopen var id: Long = 0open var title = ""open var description = ""open var author = ""open var imageUrl = "" }这是我得到的例外:FATAL EXCEPTION: mainProcess: app.androidhive.info.realm, PID: 18782java.lang.RuntimeException: Unable to start acti...

Kotlin / Java在地图中收集地图的功能和不变方法【代码】

目前,我正在通过Java API读取文件,并通过foreach方法将某些项目添加到地图中,这迫使我不得不使用mutablemap.有没有没有可变映射的项目收集方法?我知道有一个方法collect,但无法正常工作. 当前方式:val result = mutableMapOf<Int, MutableMap<Int, Double>>()Files.lines(Paths.get(folderPath)).map { line -> line.split(",") }.map { items -> Triple(items[0].toInt(), items[1].toInt(), items[2].toDouble()) }.forEach { ...

android-Lint在读取Kotlin对象的Java类上崩溃【代码】

我有一个Kotlin数据类:data class InterviewCreation(val candidateId: String,val offerId: String,val startingDateTime: Long,val duration: Long,val location: String,val description: String?)以及一个像这样开始的Mapper类(在Java中):public InterviewCreationViewModel toViewModel(InterviewCreation newInterview, String candidateName, String candidatePhotoUrl) {String description = newInterview.getDescripti...

java-如何在Kotlin批注中声明数组值?【代码】

我在Kotlin中创建自己的注释时遇到了一些问题.我必须创建一些注释,在其中一些注释中,我需要使用数组类型声明值.在Java中,我们可以这样做:public @interface JoinTable { ...JoinColumn[] inverseJoinColumns() default {}; ... }其中JoinColumn也是注释类型. 我想在科特林做这样的事情:annotation class JoinTable(val name: String,val joinColumns: Array<JoinColumn> )我也尝试这样做:annotation class JoinTable(val name: ...

java-Room Kotlin:实体和Pojos必须具有可用的公共构造函数【代码】

当我运行我的应用程序时,出现跟随错误.Error: Entities and Pojos must have a usable public constructor. You can have an emptyconstructor or a constructor whose parameters match the fields (by name and type).Tried the following constructors but they failed to match:ChatMsg(java.lang.String,int) : [arg0 : null, arg1 : null] Error: Entities and Pojos must have a usable public constructor. You can have a...

java-在Kotlin项目中使用@Value注释时出现编译器警告【代码】

在后期初始化中,是否可以使用Kotlin语言中的任何类型代替java.lang.Integer,以便不会收到编译器警告? 假设我有一个像这样的课程:class SomeClass {@Value(#{config['poolCapacity']?:'5000'})lateinit var somePool: Integer }我不能使用Kotlin的Int类型,因为它是原始类型,而lazeint不接受它. 如果我坚持使用java.lang.Integer,它可以正常工作,但是我得到了这种编译器警告:SomeClass.kt: (20, 24): This class shouldn’t be us...

Java-Kotlin:泛型和方差【代码】

我想在Throwable上创建一个扩展函数,给定一个KClass,它以递归方式搜索与该参数匹配的根本原因.以下是一种可行的尝试:fun <T : Throwable> Throwable.getCauseIfAssignableFrom(e: KClass<T>): Throwable? = when {this::class.java.isAssignableFrom(e.java) -> thisnonNull(this.cause) -> this.cause?.getCauseIfAssignableFrom(e)else -> null }这也适用:fun Throwable.getCauseIfAssignableFrom(e: KClass<out Throwable>): ...

javascript-如何在Kotlin中使用一个名为“ val()”的函数? /扩展外部JS类【代码】

尝试将Cloud Functions for Firebase与Kotlin一起使用时遇到问题. 从数据库触发器访问数据时,请使用snapshot.val();. JavaScript中的功能.在Kotlin中,这是不可能的,因为val是Kotlin中的关键字.我设法通过使用snapshot.`val()`这样,我可以在Kotlin中使用任何名称调用函数.现在,我认为每次都键入此“重音符”确实很烦人,因此我尝试创建一个扩展函数. 我的问题是我不知道如何引用类型.在Javascript中,访问数据库时为DeltaSnapshot或Da...

Android将Kotlin源码部署到Maven存储库【代码】

gradle配置如何确保kotlin源包含在要部署在Maven存储库中的源分类器jar中?解决方法:假设您使用的是自定义maven deploy gradle配置,假设Chris Banes提供了https://github.com/chrisbanes/gradle-mvn-push 您唯一需要做的就是指定您正在使用* .kt文件(假设您正在混合Java文件夹中的java& kotlin文件)android {sourceSets {main {java {include '**/*.java'include '**/*.kt'}}}}编辑:Ofc仅将代码添加到sources.jar中.现在IntelliJ需...

如何将Kotlin文件注释为Java类【代码】

在kotlin xxx.kt中:@file:JvmName("Utils") fun staticFunc()在Java xxx.java中:Utils.staticFunc()但是在Java中我们看不到类Utils的注释,因为类Utils不存在(实际上是xxx.kt).如何注释xxx.kt,让Java用户可以看到类Utils的注释?解决方法:不支持.从Kotlin的角度来看,Utils类并不存在,它仅是为JVM interop生成的,因此无法为其提供文档. 如果需要向Java调用者提供文档,请改用对象:/*** My utility functions.*/ object Utils {fun ...

如何从Java调用Kotlin标准库函数?【代码】

动机: 在我们的Android项目中,我们进行了许多验证,例如str!= null&& !str.isEmpty(),所以我决定将它们重构为辅助方法.一会儿,我使用以下课程作为助手:public class StringUtil {public static boolean isNullOrEmpty(@Nullable String str) {return str == null || str.isEmpty();} }问题: 我们已经有一个用Kotlin编写的字符串的帮助程序类(例如,String.kt).因此,尚不清楚有两个助手(一个在Java中,一个在Kotlin中). 我试过的 ...

java-使用Kotlin进行参数回调【代码】

我刚开始Kotlin,所以请保持友好:) 我有一个负责获取一些数据并通知主要活动其需要更新其UI的类. 所以我在DataProvider.kt中做了一个函数:fun getPeople(fromNetwork: Boolean, results: ((persons: Array<Person>, error: MyError?) -> Unit)) {// do some stuff stuffval map = hashMapOf("John" to "Doe","Jane" to "Smith")var p = Person(map)val persons: Array <Person> = arrayOf (p)results(persons, null)}所以我想从我的...

Java和Kotlin内部/本地/匿名类之间有什么区别?【代码】

Java和Kotlin嵌套/内部/本地类之间的名称等效和主要区别是什么?解决方法:这些是等效的名称:| Kotlin | Java | |-------------------|-------------------------------------------| | Inner Classes | Non-Static Nested Classes / Inner Classes | | Nested Classes | Static Nested Classes | | Local Classes | Local Classes ...

java-使用Kotlin在通用类中获取吸气剂(或方法或属性)列表【代码】

我不知道如何在Kotlin中处理泛型. 我正在编写一个用于对通用对象进行更改的历史记录类,该类应该获取任何类型的类作为参数:在那之后,我将比较旧的对象值和新的对象值,如果发现差异,我将把它写在我的数据类中. 我已经成功地使用bean.getClass().getMethods();在Java中进行了此操作,但是我想尝试移至Kotlin.class ChangeHistoryUtils<T> (val originalBean : T, username : String , var modifiedBean: T? = null) {data class Chang...

将Java文件转换为在Android Studio 3.3中禁用的kotlin文件【代码】

更新Android Studio 3.3 Canary 7之后,将Java文件转换为Kotlin文件显示为禁用.Android Studio Menu -> Code -> Convert Java File to Kotlin File其显示禁用.为什么禁用它以及如何启用它android studio最新版本.解决方法:打开文件,然后按Ctrl + Alt + Shift + K 将Java代码转换为Kotlin代码: >从项目结构中选择Java类文件.> Android Studio菜单->代码->将Java文件转换为Kotlin文件

java-Kotlin生成的字节码是否会影响方法计数?【代码】

例如,如果我使用methodReference = ::method而不是methodReference = { method(it) }由于反射,反编译的代码将在Java代码中包含getOwner,getName,getSignature方法.这些方法是否计入64k限制?解决方法:仅当proguard / R8未删除这些方法时,这些方法才计算在内 一个例子fun method(t : Any) {}val reference1: KFunction1<Any, Unit> = ::methodval reference2: (Any) -> Unit = { method(it) }对于reference1,字节码(反编译为Java)为...

java-解析xml kotlin android【代码】

我有这样的XML:<horo> <aries> <today> Сегодня вас могут здорово огорчить. Если от расстройства все начнет валится из рук, просто спокойно сядьте и тихонько подождите хорошей новости. </today> </aries> <taurus> <today> Сегодня у вас могут возникнуть пр...

java-Kotlin中的错误“必须不为null”【代码】

我正在尝试获取一个.zip文件中的多个文件.尝试解压缩文件会提供java.lang.IllegalStateException:zis.nextEntry不能为null.如何正确地做呢?@Throws(IOException::class)fun unzip(zipFile: File, targetDirectory: File) {val zis = ZipInputStream(BufferedInputStream(FileInputStream(zipFile)))try {var ze: ZipEntryvar count: Intval buffer = ByteArray(8192)ze = zis.nextEntrywhile (ze != null) {val file = File(targ...

Kotlin 1.2.10和Java 9对自动模块有相反的规则吗?【代码】

我有一个使用Kotlin Gradle插件的Gradle项目.我想构建一个Java 9模块,所以我的目录结构如下所示:src/main/java/- module-info.java src/main/kotlin/- Foo.kt- Bar.kt build.gradle ...我的build.gradle声明了以下依赖项:dependencies {compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.10"compile "org.jetbrains.kotlin:kotlin-reflect:1.2.10"compile "org.junit.jupiter:junit-jupiter-api:5.0.2" }我在我的Kotlin源代...