龙目岛的val推断类型的复杂性是否有限制?

时间:2014-12-16 18:17:37

标签: gradle lombok

我有一个使用jOOQ编写的数据访问对象,它返回一个相当复杂的类型签名:

Map<Record, Result<Record14<String, Integer, String, String, String, String, String, String, Integer, String, Boolean, Boolean, Integer, Boolean>>> result = create....

我试图用Lombok&#34; val&#34;

替换它
val result = create....

当我从Eclipse运行/编译时,这个工作正常... 当我尝试在Gradle中编译时,我得到:

UpdatesDAO.java:307: error: incompatible types
            .fetchGroups(key);
                        ^
  required: val
  found: Map<Record,Result<Record14<String,Integer,String,String,String,String,String,String,Integer,String,Boolean,Boolean,Integer,Boolean>>>

有谁可以告诉我为什么它可以在Gradle中用于更简单的类型,但不适用于更复杂的类型?我在同一个项目中有其他地方看起来像:

val records = dao.getDatastoreById(id); // Returns a type of List<Datastore>

他们工作得很好,即使用Gradle编译......我错过了什么?

仅供参考:Lombok版本= 1.14.8,Gradle版本2.2.1

我试过lombok == 1.14.6,Gradle版本2.2.0

我也尝试过Java 8和Java 7,包括OpenJDK和Oracle JDK

1 个答案:

答案 0 :(得分:1)

答案是jOOQ的DSL和lombok之间的冲突.. jOOQ DSL有一个方法“val”,当静态导入时会引起冲突:

import static org.jooq.impl.DSL.val;

如果您通过静态导入使用该“val”方法,它将破坏lombok的“val”实现。删除静态导入并使用“DSL.val()”代替我解决了这个问题。

有关详情,请访问:https://code.google.com/p/projectlombok/issues/detail?id=762