Kotlin-找不到与java.util.function.function等价的kotin<;T、 R>;

Kotlin-找不到与java.util.function.function等价的kotin<;T、 R>;,kotlin,Kotlin,我正在尝试使用IDEA 2019.3 Kotlin多平台库将一个java函数转换为Kotlin,该函数采用java.util.function.function 但我找不到一种方法在kotlin中实现等效函数。我可以看到Function1可以实现java互操作性,但我无法从import kotlin.jvm.functions进行任何导入* 我第一次尝试Kotlin。谁能告诉我我做错了什么 更新-请查看我的java代码 导入java.util.function.function public c

我正在尝试使用IDEA 2019.3 Kotlin多平台库将一个java函数转换为Kotlin,该函数采用
java.util.function.function

但我找不到一种方法在kotlin中实现等效函数。我可以看到Function1可以实现java互操作性,但我无法从import kotlin.jvm.functions进行任何导入*

我第一次尝试Kotlin。谁能告诉我我做错了什么

更新-请查看我的java代码

导入java.util.function.function

public class A {
    Function<String, String> function;

    public A(Function<String, String> function) {
        super();
        this.function = function;
    }

public String convert(String input) {
    return function.apply(input);

}
}
公共A类{
功能;
公共A(职能){
超级();
这个函数=函数;
}
公共字符串转换(字符串输入){
返回函数。应用(输入);
}
}

听起来像是要将接受函数的Java函数转换为等效的Kotlin函数

例如:

Java

public class JavaFunctions {
   public static <T,R> void runAFunction(Function<T, R> userFunction){
      userFunction.apply(null);
   }
}
公共类JavaFunctions{
publicstaticvoid运行函数(functionuserfunction){
userFunction.apply(null);
}
}
Kotlin(这两个功能是等效的)

类KotlinFunctions{
伴星{
@JvmStatic
有趣的runAFunction(用户函数:(T?->R?){
调用(null);
}
@JvmStatic
fun runAFunction2(userFunction:Function1){
调用(null);
}
}
}

听起来像是要将接受函数的Java函数转换为等效的Kotlin函数

例如:

Java

public class JavaFunctions {
   public static <T,R> void runAFunction(Function<T, R> userFunction){
      userFunction.apply(null);
   }
}
公共类JavaFunctions{
publicstaticvoid运行函数(functionuserfunction){
userFunction.apply(null);
}
}
Kotlin(这两个功能是等效的)

类KotlinFunctions{
伴星{
@JvmStatic
有趣的runAFunction(用户函数:(T?->R?){
调用(null);
}
@JvmStatic
fun runAFunction2(userFunction:Function1){
调用(null);
}
}
}

不清楚您的问题,但假设您试图从Java复制功能:

在Kotlin中,您不直接使用函数接口,因为函数是一流的。Function1、Function2等类仅用于使函数对Java代码和JVM可用

如果要创建Java
函数的等价物,可以使用Kotlin的
fun
或lambda语法定义函数

fun getStringLength(x: String): Int {
    return x.length
}

//...
val functionReference = ::getStringLength
// Java code will treat this as a Function1<String, Int>
您可以使用引用的名称调用函数:

fun <T, R> doSomething(input: T, functionalReference: (T) -> R): R {
    return functionalReference(input)
}
fun doSomething(输入:T,功能参考:(T)->R):R{
返回函数引用(输入)
}

不清楚您的问题,但假设您试图从Java复制功能:

在Kotlin中,您不直接使用函数接口,因为函数是一流的。Function1、Function2等类仅用于使函数对Java代码和JVM可用

如果要创建Java
函数的等价物,可以使用Kotlin的
fun
或lambda语法定义函数

fun getStringLength(x: String): Int {
    return x.length
}

//...
val functionReference = ::getStringLength
// Java code will treat this as a Function1<String, Int>
您可以使用引用的名称调用函数:

fun <T, R> doSomething(input: T, functionalReference: (T) -> R): R {
    return functionalReference(input)
}
fun doSomething(输入:T,功能参考:(T)->R):R{
返回函数引用(输入)
}

请共享代码,以便我们更好地理解您的问题。您可以澄清一下,您是想在Kotlin项目中使用Java库,还是想复制功能?我想复制功能请共享代码,以便我们更好地理解您的问题您可以澄清一下,你是想在Kotlin项目中使用Java库还是复制功能?我想复制功能最后我在这一行做了一些事情。谢谢最后我在这条线上做了点什么。谢谢你的回复。我用了@tenfour04,谢谢你的回复。我使用了@Tenfour04
fun <T, R> doSomething(input: T, functionalReference: (T) -> R): R {
    return functionalReference(input)
}