Van egy szamomra nem ismert oku jelenseg, bocs kicsit hosszu.
A feladat: volt egy 2 adott tipusu objektumot kombinalo osztaly, most ugyanez kene altalanosan, tobb elemre.
Az objectumok tipusabol ami lenyeges:
public interface SpecInterface<K extends Serializable & Comparable<? super K>>
extends DoublePanel<K, String>
ahol:
public interface DoublePanel<R extends Serializable,C extends Serializable>
Ezen kivul kene hasznalni a kombinalashoz mindket iranybol egy-egy fuggvenyt:
A SpecInterface-bol: Optional<SubType> getMyList()
A DoublePanel oldalrol meg egy Utils osztalyon keresztul:
public static <R extends Serializable, C extends Serializable>
DoublePanel<R, C> mergeColumns(DoublePanel<R, C> left,
DoublePanel<R, C> right)
Ami az eddig kodban volt:
SpecInterface<K> f1=...
SpecInterface<K> f2=...
es ezutan siman ment a ketfajta meghivas:
...=f1.getMyList()
...=DoublePanelUtils.mergeColumns(f1, f2)
Most viszont az elemeket praktikus okokbol Stream-bol vennem es hasznalnam ezeket a kombinalashoz szukseges lepeseket. Az elso nyilvanvaloan csak akkor megy vegig, ha a tipusa Stream<SpecInterface<K>> fobjs, viszont ekkor a ...=fobjs.reduce((f1, f2) -> DoublePanelUtils.mergeColumns(f1, f2)).get();
sornal azt mondja, hogy nem tudja R,C, es K erteket meghatarozni.
Ellenben ha beszurom hogy
Stream<DoublePanel<K, String>> fobjs2 = fobjs.map(f -> f);
akkor siman lefordul az
...=fobjs2.reduce((f1, f2) -> DoublePanelUtils.mergeColumns(f1, f2)).get();
Mukodik, de randa, es jogosan nem szeretnek code review-n, de azt se tudom hogyan kene rakeresni az okra es megoldasra. El tudna valaki legalabb iranyitani hogy merre keressek?