从 kotlin.text 包从 Java 调用 Kotlin 扩展函数



我正在尝试使用toRegex()Java 代码中kotlin.text包中的扩展函数。以下是该文件的代码:

/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
@file:kotlin.jvm.JvmMultifileClass
@file:kotlin.jvm.JvmName("StringsKt")
package kotlin.text
/**
* Converts the string into a regular expression [Regex] with the default options.
*/
@kotlin.internal.InlineOnly
public inline fun String.toRegex(): Regex = Regex(this)
/**
* Converts the string into a regular expression [Regex] with the specified single [option].
*/
@kotlin.internal.InlineOnly
public inline fun String.toRegex(option: RegexOption): Regex = Regex(this, option)
/**
* Converts the string into a regular expression [Regex] with the specified set of [options].
*/
@kotlin.internal.InlineOnly
public inline fun String.toRegex(options: Set<RegexOption>): Regex = Regex(this, options)

不幸的是,我没有成功地从 Java 代码调用该函数。我想我错过了一些东西。这是我的尝试:

import kotlin.text.StringsKt;
...
StringsKt.toRegex("some_string"); // Doesn't compile.

不编译。

这是由该函数上的@InlineOnly注释引起的。

InlineOnly 意味着与此 Kotlin 函数对应的 Java 方法被标记为私有,以便 Java 代码无法访问它(这是调用内联函数而不实际内联它的唯一方法(。

  • 来自安德烈·布雷斯拉夫在 Kotlin 论坛上。

此外,这是这个问题的潜在重复,尽管它没有直接询问@InlineOnly

相关内容

  • 没有找到相关文章

最新更新