java - 带参数的 Kotlin 扩展
问题描述
在一个同时具有 Kotlin 和 java 的 Android 项目上,我想在一些 java 文件中substringBeforeLast(delimiter)
使用Kotlin 函数。substringAfterLast(delimiter)
所以我想到了使用扩展。我做了以下工作,
fun String.getStringAfterLast(): String{
return this.substringAfterLast(".")
}
但是我正在考虑将分隔符作为参数传递,但是在尝试在 java 中使用“删除第二个参数...”时它给了我一个错误
fun String.getStringBeforeLast(delimiter: String): String{
return this.substringBeforeLast(delimiter)
}
方法正确吗?可以做到吗?
解决方案
您解决此问题的方法是正确的,它应该可以工作。例如,使用这个 Kotlin 代码:
fun String.getStringBeforeLast(delimiter: String): String{
return this.substringBeforeLast(delimiter)
}
您应该能够像这样从 Java 调用该函数:
ExtensionKt.getStringBeforeLast(str, ",");
如果它不起作用,那么我想一定有一些小错误,例如:您将delimiter
参数添加到getStringBeforeLast()
函数中,但错误地尝试getStringAfterLast()
从 Java 调用函数。
此外,您始终可以直接从 Java 调用 Kotlin stdlib 的函数。请注意substringBeforeLast()
/substringAfterLast()
实际上接收一个额外的可选参数,您需要从 Java 中提供它,从而使代码更加冗长:
StringsKt.substringBeforeLast(str, ",", str);
推荐阅读
- python - 从另一个文件导入一个函数,在哪里导入其他库?
- logging - Fleuntd 屏蔽日志中的私有数据
- php - php变量调用自定义
- asp.net - aria-autocomplete / typeahead 不是自动选择
- libreoffice-calc - 对不相邻的单元格使用 COUNTIF
- kotlin - 数组的内联函数
- bash - Bash 在 curl 命令中添加额外的单引号,定义为 "...$'...'..."
- javascript - 在会话存储中设置嵌套对象值
- ios - 在 UITableview 中快速删除行并返回上一个视图时应用程序崩溃
- google-apps-script - 如何发布日历的附加组件?