Új hozzászólás Aktív témák

  • Lortech

    addikt

    válasz axioma #10211 üzenetére

    Röviden: tényleg nincs.

    Csinálhatsz generikus interface-t:

    public interface IF1<T extends IF1> {
    void add(IF1<T> other);
    }

    public class Imp1 implements IF1<Imp1> {
    @Override
    public void add(IF1<Imp1> Other) {
    }
    }

    public class Imp2 implements IF1<Imp2> {

    @Override
    public void add(IF1<Imp2> other) {
    }
    }

    {
    IF1 impraw = new Imp2();
    IF1<Imp1> impl1 = new Imp1();
    IF1<Imp2> impl2 = new Imp2();
    impraw.add(impraw);
    impraw.add(impl1);
    impraw.add(impl2);
    impl1.add(impl1);
    impl1.add(impraw);

    impl2.add(impl2);
    impl2.add(impraw);

    pass(impraw, impl1);
    pass(impl1, impraw);

    pass2(impl2, impl1);
    }

    private static void pass(IF1<Imp1> one, IF1 other) {
    one.add(other);
    other.add(one);
    }

    private static void pass2(IF1 one, IF1 other) {
    one.add(other);
    other.add(one);
    }

    De ez jobbára csak bohóckodás, mert ha használni akarod, úgyis meg kell adnod a típus paramétert fordítás időben, hogy garantáltan *csak saját magával tudd átadni neki, vagy típus paraméter nélkül hagyod és unchecked leszel. Valamint raw IF1 (impraw-t) IF1 példányt oda vissza tudod passzolgatni futási és fordítási hiba nélkül.

Új hozzászólás Aktív témák