gpt4 book ai didi

java - 静态 Lists.transform 标记为错误,但使用相同变量的 Collections.transform 可以工作

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:42 31 4
gpt4 key购买 nike

我正在尝试使用 Guava 静态 Collections2.transform 和 Lists.transform 方法创建基于 jooq Record 类的 ArrayList。下面是生成 result3 记录的查询。

    final Table<Record3<Key<Store>, Key<Campaign>, String>> c1 = sql.dsl()
.select(CAMPAIGN.STORE_KEY, CAMPAIGN.CAMPAIGN_KEY, tag)
.from(CAMPAIGN)
.where(CAMPAIGN.CAMPAIGN_KEY.equal(campaignKey))
.asTable("c1");

final Table<Record3<Key<Store>, Key<Campaign>, String>> c2 = sql.dsl()
.select(CAMPAIGN.STORE_KEY, CAMPAIGN.CAMPAIGN_KEY, tag)
.from(CAMPAIGN)
.asTable("c2");

final Result<Record2<Key, Integer>> result3 = sql.dsl()
.select(c1Campaign, count(c2Tag))
.from(c1, c2)
.where(c1.field("tag", String.class).equal(c2.field("tag", String.class)))
.and(c1.field("store_key", Key.class).equal(c2.field("store_key", Key.class)))
.and(c1.field("campaign_key", Key.class).notEqual(c2.field("campaign_key", Key.class)))
.groupBy(c2.field("campaign_key", Key.class))
.orderBy(inline(2).desc())
.fetch();

以前,我有以下代码,该代码工作正常,直到我意识到我需要稍后向集合添加值,而创建的集合对象不支持该值。

    final Collection<Key<Campaign>> keys = Collections2.transform(result3, Record2::value1);

由于这个问题,我尝试切换到创建 ArrayList,但是当我添加以下内容时,我收到一条错误消息“无法从静态上下文引用非静态方法”

    final ArrayList<Key<Campaign>> keys2 = Lists.transform(result3, Record2::value1);

令人困惑的是,这两种转换方法都是静态的,并且它们在完全相同的对象上运行,那么为什么第一个可以工作,而另一个却不能呢?另外,如果第二种方法不起作用,我怎样才能以这种方式完成生成ArrayList?

最佳答案

我发现在编译时看到的第二个错误为我指明了答案。我没有从 Lists.transform 创建 ArrayList,而是将其更改为 List 并且可以正确编译

关于java - 静态 Lists.transform 标记为错误,但使用相同变量的 Collections.transform 可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313830/

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