Ho un Data Access Object scritto utilizzando jOOQ e restituisce un tipo di firma piuttosto complessa:Esiste un limite alla complessità di un tipo da dedurre dalla val di Lombok?
Map<Record, Result<Record14<String, Integer, String, String, String, String, String, String, Integer, String, Boolean, Boolean, Integer, Boolean>>> result = create....
ho provato a sostituirlo con "val" di Lombok
val result = create....
Questo funziona quando corro/compilazione da Eclipse ... Quando provo a compilare entro Gradle, ottengo:
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>>>
Può chiunque dimmi perché avrebbe funzionato in Gradle per tipi più semplici, ma non per tipi più complessi? Ho altri posti in questo stesso progetto che sembrano qualcosa di simile:
val records = dao.getDatastoreById(id); // Returns a type of List<Datastore>
e funzionano bene, anche quando si compila con Gradle ... Mi sto perdendo qualcosa?
FYI: versione Lombok = 1.14.8, versione 2.2.1 Gradle
ho cercato Lombok == 1.14.6, versione 2.2.0 Gradle
Ho anche provato sia con Java 8 e Java 7, sia OpenJDK e Oracle JDK
Domanda: perché avete bisogno di quattordici tipi generici? Questo è un odore di codice più di ogni altra cosa ... – Makoto
Suppongo che tu dovresti parlarne con le persone di jOOQ e come fanno le loro interazioni con il database ... Indipendentemente dal fatto che si tratti di un odore di codice, non ha molto senso funzionerebbe durante la compilazione da Eclipse e non funzionerà durante la compilazione da Gradle. –
@Makoto: Spesso questi tipi vengono utilizzati solo dietro le quinte nell'API fluente di jOOQ e vengono dedotti dal compilatore –