Scala中作为函数接口的Pass方法
我需要在Scala中以Scala中作为函数接口的Pass方法,scala,Scala,我需要在Scala中以io.debezium.config.Field.Validator的形式传递一个public static int isRequired(配置配置、字段、验证输出问题) 而在Java中,这只是一个调用MyObject::isRequired我似乎无法使它在Scala中工作 我尝试通过以下方式手动包装处理程序(MyObject.isRequired): def handler[Valid](h: Valid) = new Field.Validator {
io.debezium.config.Field.Validator
的形式传递一个public static int isRequired(配置配置、字段、验证输出问题)
而在Java中,这只是一个调用MyObject::isRequired
我似乎无法使它在Scala中工作
我尝试通过以下方式手动包装处理程序(MyObject.isRequired)
:
def handler[Valid](h: Valid) =
new Field.Validator {
override def validate(config: Configuration, field: Field, problems: Field.ValidationOutput): Int =
h(config, field, problems)
}
但不管出于什么原因,Scala处理方法引用的方式似乎与我预期的不同
使此编译/工作的最简单方法是什么?在这种情况下工作的方法是:
def handler(h: (Configuration, Field, Field.ValidationOutput) => Int): Field.Validator =
new Field.Validator {
override def validate(config: Configuration, field: Field, problems: Field.ValidationOutput): Int =
h(config, field, problems)
}
所以我的问题有两方面:
Valid
的类型是(配置、字段、字段.ValidationOutput)=>Int
,显然不是这样。至少有一点Scala类型的系统我似乎还没有完全理解