我正在尝试使用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
。