Jeg har lidt problemer med type-inferens ved statiske metoder som bruger
generics. Se eksemplet herunder. Det jeg gerne vil er selvf. det som
ikke virker :-) :-(
Jeg ville gerne have det virker, da det er til noget builder hvor der
bruges statiske imports - hele ideen er at det er noget lettere at
skrive kun metode(..) end Blabla.<Type>metode(..)
Findes der nogen workarounds for at få type-inferensen til at virke over
flere "led" ?
---
package prototype;
public class TypeInfTest {
public static class Container<V, E> {
}
public interface Generator<V, E> {
public void apply(Container<V, E> container);
}
public static class MyGenerator<V, E> implements Generator<V, E> {
@Override
public void apply(Container<V, E> veContainer) {
// whatever
}
}
public static <V, E> Generator<V, E> generator() {
return new MyGenerator<V, E>();
}
public static <V, E> Container<V, E> execute(Generator<V, E> generator) {
Container<V, E> c = new Container<V, E>();
generator.apply(c);
return c;
}
public static void main(String[] args) {
// virker
Container<String, String> c0 = execute(null);
// virker
Container<String, String> c1 = execute(TypeInfTest.<String, String>generator());
// virker
Container c2 = execute(generator());
// virker IKKE
Container<String, String> c3 = execute(generator());
}
}
---
Mvh,
Søren
> public static<V, E> Generator<V, E> generator() {
> return new MyGenerator<V, E>();
> }
>
> public static<V, E> Container<V, E> execute(Generator<V, E> generator) {
> Container<V, E> c = new Container<V, E>();
> generator.apply(c);
> return c;
> }
>
> public static void main(String[] args) {
> // virker
> Container<String, String> c0 = execute(null);
>
> // virker
> Container<String, String> c1 = execute(TypeInfTest.<String, String>generator());
>
> // virker
> Container c2 = execute(generator());
>
> // virker IKKE
> Container<String, String> c3 = execute(generator());
> }
Så vidt jeg ved laver Java kun type inferens ved assignment - ikke
ved argumenter til kald.
Altså: bad luck.
Arne
> On 12-01-2010 09:45, Soren AD wrote:
>> Jeg har lidt problemer med type-inferens ved statiske metoder som bruger
>> generics. Se eksemplet herunder. Det jeg gerne vil er selvf. det som
>
> Så vidt jeg ved laver Java kun type inferens ved assignment - ikke
> ved argumenter til kald.
Ah ok, det var lige den information jeg ikke kunne finde, tak!
> Altså: bad luck.
(Men, med den nye viden kan jeg internt i API gøre lidt antagelser så
det udadtil virker fornuftigt :)
Mvh,
Søren