Piszę konstruktora dla mojej "głównej" klasy. Pierwszą rzeczą, którą robi, jest wywołanie metody użycia commons-cli do parsowania wiersza poleceń. Jeśli metoda parseOptions
zwróci wartość false, wystąpi błąd i konstruktor powinien zakończyć działanie.Wcześniejszy powrót z konstruktora Scala
Próbowałem pisać następujący kod
if (!parseOptions(args)) return
ale kompilator narzeka, że mam „powrót instrukcji definicji metody zewnątrz”.
Krótki wywoływania System.exit(1)
lub odwracanie Boolean (i oddanie całej reszty mojego logiki wewnątrz rachunku if
, czy jest jakiś sposób, aby powrócić „wcześnie” od konstruktora?
Przypuszczam, że mam parseOptions
metoda wygeneruje IllegalArgumentException
i złapać, że w moim Main
obiektu.
Dzięki.
Chociaż zgadzam się z innych odpowiedzi, że żaden konstruktor powinien wrócić normalnie, jeżeli nie jest w stanie aby umieścić instancję w stanie, który spełnia niezmienniki klasy, zastanawiam się, dlaczego nie chcesz używać 'if '? –
Jeśli mam kilka warunków, które mogą skutkować wczesnym powrotem, otrzymam kaskadę 'if' na wielu poziomach. – Ralph
Tak? Jeśli jest to logika twojego konstruktora, taka jest logika twojego konstruktora. Zaleca się także * nie *, aby mieć dużo skomplikowanej logiki w swoich konstruktorach. Idealnie po prostu "zanotują" wartości składające się na stan/wartość instancji. –