我正在编写插入,更新方法并尝试使用泛型参数作为方法参数。以下是我迄今为止在锡兰编写的代码,它汇编得很好。
public class TblGuest extends TableImpl<TblGuestRecord> {
public final TableField<TblGuestRecord, Integer> id ....
public final TableField<TblGuestRecord, String> guestName...
}
我想将字段和值作为方法调用的一部分传递。我是由JOOQ生成的一个类:
Set<TableField<GuestRecord,Object>> fields = HashSet<TableField<GuestRecord,Object>>();
很明显,这些字段对于TableField有不同的Generic参数,我想知道是否有办法在HashSet中添加这些参数... TableField<GuestRecord,????>
当然,除了TableField<GuestRecord,Object>
之外添加任何.ui-input-text input, .ui-input-search input{
font-size: 24px !important;
height: 60px !important;
}
.ui-icon-search:after{
font-size: 300px !important;
width: 200px !important;
}
都会导致编译异常。但有没有办法实现这一目标?
答案 0 :(得分:1)
使用通配符更合适,而不是放置很多Generic Param类型。以下代码按预期工作:
Time Gr Ans Correct
1 g1 A NA
2 g1 B NA
3 g1 C NA
1 g2 A 1
2 g2 B 1
3 g2 B 0
1 g3 C 0
2 g3 B 1
3 g3 C 1
1 g4 A 1
2 g4 C 0
3 g4 B 0
调用者可以将HashSet / HashMap的实例作为:
shared void insert<R>(DSLContext ctx, Table<R&Record> table, Set<TableField<R&Record, out Object>> fields, Set<Object> values){
ctx.insertInto(table).columns(fields).values(values).execute();
}
shared void update<R>(DSLContext ctx, Table<R&Record> table, JMap<TableField<R&Record, out Object>, Object> map){
ctx.update(table).set(map).execute();
}
答案 1 :(得分:0)
我已经能够通过将Set的Generic params更改为Set<TableField<R&Record, Object>|TableField<R&Record, JString>|TableField<R&Record, JInteger>> fields
来实现它。并在调用者中创建具有相同泛型类型的HashSet。这意味着,为了使用JOOQ编写带有泛型参数的插入/更新方法,必须使用在JOOQ表类中创建的唯一字段类型来参数化所有类型参数。但是,它是最好的方式/正确的方式吗?