我正在利用 Scala 和 Java 之间的互操作性,并使用下面的代码使用 Scala 来实例化用 Java 编写的同一项目中的类。 CommandExecutor
参数是从父类继承的。
class IdmIdentityServiceImpl extends ServiceImpl with IdmIdentityService {
override def createNativeUserQuery: NativeUserQuery = {
new NativeUserQueryImpl(commandExecutor)
}
}
在实例化 NativeUserQueryImpl
时出现错误,提示无法解析构造函数
NativeUserQueryImpl
是用 Java 编写的,但我一直在阅读有关 Java 和 Scala 之间的互操作性的内容,并且感觉它应该可以工作。
这是 NativeUserQueryImpl
类,它在其构造函数之一中接收 CommandExecutor
类型。该类来自 flowable-engine 库。
public class NativeUserQueryImpl extends AbstractNativeQuery<NativeUserQuery, User> implements NativeUserQuery {
private static final long serialVersionUID = 1L;
public NativeUserQueryImpl(CommandContext commandContext) {
super(commandContext);
}
public NativeUserQueryImpl(CommandExecutor commandExecutor) {
super(commandExecutor);
}
// results ////////////////////////////////////////////////////////////////
public List<User> executeList(CommandContext commandContext, Map<String, Object> parameterMap, int firstResult, int maxResults) {
return commandContext.getUserEntityManager().findUsersByNativeQuery(parameterMap, firstResult, maxResults);
}
public long executeCount(CommandContext commandContext, Map<String, Object> parameterMap) {
return commandContext.getUserEntityManager().findUserCountByNativeQuery(parameterMap);
}
}
编辑:
完全错误
Error:(31, 5) overloaded method constructor NativeUserQueryImpl with alternatives:
(x$1: org.flowable.idm.engine.impl.interceptor.CommandExecutor)org.flowable.idm.engine.impl.NativeUserQueryImpl <and>
(x$1: org.flowable.idm.engine.impl.interceptor.CommandContext)org.flowable.idm.engine.impl.NativeUserQueryImpl
cannot be applied to (org.flowable.engine.impl.interceptor.CommandExecutor)
new NativeUserQueryImpl(commandExecutor)
最佳答案
从原始问题中发布的完整错误来看,从父类ServiceImpl
继承的CommandExecutor
似乎在库中有两个不同的版本
org.flowable.idm.engine.impl.interceptor.CommandExecutor
和
org.flowable.engine.impl.interceptor.CommandExecutor
其中细微的区别在于,一个来自 idm
包,另一个则不是。
将 ServiceImpl 从第二个包更改为第一个包,更新传入的 CommandExecutor
参数,并修复问题。
关于java - Scala 无法解析构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41810996/