Guava静的Collections2.transformメソッドとLists.transformメソッドを使用してjooq Recordクラスに基づいてArrayListを作成しようとしています。以下は、result3レコードを生成しているクエリです。Static Lists.transformはエラーとしてマークされていますが、同じ変数を使用するCollections.transformが機能します
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の作成に切り替えることを試みたが、私が追加したときに、次は私が「非静的メソッドがstaticコンテキストから参照することはできません」というエラーが出る
final ArrayList<Key<Campaign>> keys2 = Lists.transform(result3, Record2::value1);
混乱させることは、両方の変換メソッドが静的であり、それらはまったく同じオブジェクト上で動作しているので、なぜ最初のものが動作し、他のものは動作しないのでしょうか?また、2番目のメソッドがうまくいかない場合、この方法でArrayListの生成をどのように行うことができますか?