gpt4 book ai didi

java - jOOQ 生成的类的多态性发生了什么变化?

转载 作者:行者123 更新时间:2023-11-30 06:02:19 25 4
gpt4 key购买 nike

让我们从 my other question 获取查询:

SelectConditionStep<Record1<String>> query = create
.select(AUTHOR.LASTNAME.as("AuthorName"))
.from(
(
BOOK.leftOuterJoin(BOOK_AUTHOR).on(BOOK.ID.eq(BOOK_AUTHOR.BOOKID))
).leftOuterJoin(AUTHOR).on(AUTHOR.ID.eq(BOOK_AUTHOR.AUTHORID))
)
.where(BOOK.ID.eq(1))
;

//when
Result<Record1<String>> result = query.fetch();

如果我尝试替换 SelectConditionStep<Record1<String>>SelectConditionStep<Record> ,我明白

Incompatible types.

Required: SelectConditionStep<org.jooq.Record>

Found: SelectConditionStep<org.jooq.Record1<java.lang.String>>

但是...

package org.jooq;

import javax.annotation.Generated;

/**
* A model type for a records with degree <code>1</code>
*
* @see Row1
* @author Lukas Eder
*/
@Generated("This class was generated using jOOQ-tools")
public interface Record1<T1> extends Record {...}

那么......什么给出了?

除非我遗漏了一些非常明显的东西,否则我不应该被允许处理 Record1 的实例吗?就好像它们是 Record是吗?

(是的,我开始质疑自己,以至于我需要检查自己是否完全精神错乱:https://ideone.com/0O4mOU)

最佳答案

那就是how generics work in Java

这也无法编译,并显示相同的错误消息:

ArrayList<Animal> x = new ArrayList<Dog>(); 
ArrayList<List<String>> x = new ArrayList<ArrayList<String>>();

您可能需要输入类似 SelectConditionStep<? extends Record> query 的变量。这样,您就告诉编译器 Record 的任何子类是可以接受的(否则情况并非如此)。如果您这样做,您还将获得 Result<? extends Record>不过,回到最后,列的数量和形状不再是类型安全的。

关于java - jOOQ 生成的类的多态性发生了什么变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55237554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com