我有一个使用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
答案 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