0

我正在尝试使用我的 Java 代码toRegex()中的包中的扩展功能。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.

不编译。

4

1 回答 1

1

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

InlineOnly 表示这个 Kotlin 函数对应的 Java 方法被标记为私有,这样 Java 代码就无法访问它(这是在不实际内联的情况下调用内联函数的唯一方法)。


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

于 2019-12-12T14:14:49.010 回答