Wywolanie konkretnej przeciezonej metody

0

Problem polimorficzny. Mam klasę z dwoma metodami:

public final class MojaKlasa {
    public static void warn (Object... argumenty) {
        System.out.println("object");
    }
    public static void warn (Exception ex) {
        System.out.println("exception");
    }
}

z kodu wywołuje wiec sobie:

MojaKlasa.warn(new Exception());

I oczywiście wywoływany jest warn dla Exception. Zależy mi jednak na tym aby wywołać z tym samym argumentem KONKRETNIE metodę dla Object. Da się jakoś? Wiem ze mogę zrzutować ordynarnie:

MojaKlasa.warn((Object)new Exception());

Ale może coś rozsądniejszego? Dodam tylko ze MojaKlasa zamknięta jest w libach wiec nie mam możliwości jej edytowania, a pomysły z "zrób nowa klasę dziedziczącą po MojaKlasa" tez raczej odpadają, bo wszędzie w projekcie już jest używana wersja z biblioteki.

0

Podstawowe pytanie: po co?

3

Pierwsza metoda przyjmuje varargs, więc zamiast rzutowania możesz też przekazać tablicę z jednym obiektem.

0

Argument podany metodzie oczekującej zmiennej listy argumentów jest rozwijany w tablicę. Jeśli już naprawdę komuś zależy na takim wywołaniu, można zrobić to tak:

MojaKlasa.warn(new Object[]{new Exception()});

Na upartego, żeby wyrażenie nie raziło przy każdym wywołaniu

public static void warnObject (Exception ex) {
    System.out.println(new Object[]{ex});
}

i potem można spokojnie wywoływać nową metodę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1