我有一个带有以下功能的scala文件:
def whitelist(shouldSample: => Boolean = true)
现在,在Java代码中,我想传递一个Function0作为参数:
Function0<Boolean> filterFunction = new AbstractFunction0<Boolean>() {
@Override
public Boolean apply() {
return true;
}
};
ThriftEndpointSampler.whitelist(filterFunction);
Intellij抱怨filterFunction
没有使用Java boolean
原语进行参数化,这是我无法做到的,因为它是一个原语。编译器也会抱怨,请求filterFunction
使用java.lang.Object
进行参数化。使用Object
代替布尔值为编译器工作,但Intellij仍然抱怨。 scala.Boolean
无法正常工作,因为我认为Java boolean
会自动转换为scala Boolean
基元。
使用Object
对我来说似乎很奇怪。这样做有更好的做法吗?