我正在使用 IntelliJ 用(JetBrains的) Kotlin 语言编写代码,并且在编译器上遇到错误,编译器无法找到函数的正确参数类型,总是说该函数接收 Nothing
参数。
有人知道是什么问题吗?
Print Screen showing the error on IntelliJ IDE
在该图中,控制台显示了编译器错误,但屏幕中心的帮助显示IntelliJ可以找到函数的正确参数类型,而编译器则找不到。
====编辑=========================================
Java代码是:
@Transactional
public int deletar(BuscaInfo info) {
// ---- Criando a busca ao banco:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaDelete query = cb.createCriteriaDelete( info.classe );
Root root = query.from( info.classe );
// Cláusula WHERE do banco:
Predicate[] preds = WhereBuilder.build(cb, root, info.where);
if (preds.length < 1) {
throw new MsgException(JsonResponse.ERROR_EXCECAO,null,"Os parâmetros de filtragem da QueryString não são válidos.");
}
query.where(preds);
// A busca ao banco:
int qtd = em.createQuery(query).executeUpdate();
return qtd;
}
且
info.classe
的类型为Class<?>
。使用Hibernate 5.x和JPA 2.1 API进行编译。
该代码适用于WildFly 9.x和10.x。
最佳答案
您能否检查q
变量的类型? (导航至运行alt + q)
我想它的类型是CriteriaDelete<*>
,并且出于与Java中无法使用from
类型的变量相同的原因,不能调用这些CriteriaDelete<?>
方法:我们无法确切地说出创建实例时存在的T
。
但是,当然可以在这里进行诊断。我已经在上面创建了issue
关于intellij-idea - Kotlin/IntelliJ-编译器无法找到函数的正确参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42711192/