Ten kod który napisałeś nie ma całkowicie sensu, gdyż tak naprawdę, przerwanie pętli następuje przez zwykły break.
A nie przez zmienna
boolean active = true;
ta zmienna nie jest nawet widoczna po za tą funkcją, jest to zmienna lokalna, więc jak napiszesz prostą logikę nawet, po prostu zwrócisz z funkcji false/true... to wyjdzie na to samo, twoja pętla przerwyana jest tylko i wyłącznie dlatego, że "twój warunek"
if(!example()) break;
kończy działanie pętli while. i nic po za tym.
Programiści takich rzeczy nie robią, bo jest to czysto dziwacznie i niepotrzebnie napisany kod. Tworzysz zależność funkcji zewnętrznej od wewnętrznej co troszkę przeczy idei i powinno być odwrotnie, niemniej jednak, twoja funkcja wpływająca na pewne warunki po prostu może być funkcją która robi coś innego, a jej rezultat zakończy działanie, nie ma potrzeby definiowania wewnętrznego argument true/false... bo jak wspomniałem liczy się tlyko i wyłącznie to co funkcja zwróci, a zwrócić musi boolean.
Czemu to nie ma sensu ?
Bo nie masz wpływu na sterowanie wewnętrznej metody, po raz uruchomionym kodzie i programie, twoja funkcja nawet nie przyjmuje parametrów. Więc działanie jest zawsze takie samo - dla zachardkowdowanych danych, a zmienna jest widoczna tylko i aż w ciele tej jednej funkcji example().
Po drugie niczym się to nie rózni niż proste :
public static void main(String[] args) {
while (isActive()) {
// kod który się ma jakiś czas wykonywać
}
}
public static boolean isActive() {
// mozna zwrocić false, jak chcesz zakończyć działanie. Lub inną logikę opartą o proste warunki które nie potrzebują dodatkowej zmiennej active.
return true;
}
bez zbędnych rzeczy, nie potrzebujesz mieć zmiennej active nawet jeśli we funkcji następuje decyzja czy będzie false/czy true, bo możesz to zrwrócić po prostu bezpośrednio z funkcji przez proste warunki.
Jednak po prostu takie rzeczy rozwiązuje się w ramach tej samej funkcji :
Kończysz sterując w tej samej metodzie, bo nic nie stoi na przeszkodzie, baaa... często zmienna jest częscią klasy... aby była zależna od obiektu. to znaczy z zewnątrz można było zmienić działanie funkcji.
public static void main(String[] args) {
boolean active = true;
while (active) {
// jakas logika i jesli np cos jest spelnione to
active = false
}
}