我有一个使用jOOQ编写的数据访问对象,它返回一个相当复杂的类型签名:
Map<Record, Result<Record14<String, Integer, String, String, String, String, String, String, Integer, String, Boolean, Boolean, Integer, Boolean>>> result = create....
Run Code Online (Sandbox Code Playgroud)
我试图用Lombok的"val"替换它
val result = create....
Run Code Online (Sandbox Code Playgroud)
这在我从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>>>
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么它可以在Gradle中用于更简单的类型,但不适用于更复杂的类型?我在同一个项目中有其他地方看起来像:
val records = dao.getDatastoreById(id); // Returns a type of List<Datastore>
Run Code Online (Sandbox Code Playgroud)
他们工作得很好,即使用Gradle编译......我错过了什么?
仅供参考:Lombok版本= 1.14.8,Gradle版本2.2.1
我试过lombok == 1.14.6,Gradle版本2.2.0
我也尝试过Java 8和Java 7,包括OpenJDK和Oracle JDK
答案是jOOQ的DSL和lombok之间的冲突。jOOQ DSL有一个方法“val”,静态导入时会导致冲突:
import static org.jooq.impl.DSL.val;
Run Code Online (Sandbox Code Playgroud)
如果您通过静态导入使用该“val”方法,它将破坏 lombok 的“val”实现。删除该静态导入并使用“DSL.val()”为我解决了这个问题。
更多信息请访问:https://code.google.com/p/projectlombok/issues/detail?id=762
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |