W języku Java, jaki cel spełniają słowa kluczowe` final`,` finally `i` finalize'?

W Javie, jaki cel mają słowa kluczowe final, finally i finalize spełnić?

Author: Rob Kielty, 2011-10-19

7 answers

Finał

final może być używany do oznaczania zmiennej "niezmiennej"

private final String name = "foo";  //the reference name can never change

final może również sprawić, że metoda nie będzie "nadpisywalna"

public final String toString() {  return "NULL"; }

final może również sprawić, że klasa nie będzie "dziedziczona". tzn. klasa nie może być podklasowana.

public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed

Wreszcie

finally jest używany w instrukcji try/catch do wykonania kodu"zawsze"

lock.lock();
try {
  //do stuff
} catch (SomeException se) {
  //handle se
} finally {
  lock.unlock(); //always executed, even if Exception or Error or se
}

Java 7 posiada nową instrukcję try with resources , której można użyć do automatycznego zamykania zasobów które bezpośrednio lub pośrednio implementują java. io. Closeable lub java.lang.Autoklosowalny

Finalizuj

finalize jest wywoływany, gdy obiekt jest zbierany śmieci. Rzadko trzeba to nadpisywać. Przykład:

protected void finalize() {
  //free resources (e.g. unallocate memory)
  super.finalize();
}
 261
Author: krico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-25 12:55:26
  • "finał" oznacza, że czegoś nie można zmienić. Zwykle chcesz używać tego na zmiennych statycznych, które będą miały tę samą wartość przez cały okres użytkowania programu.
  • "Finally" jest używane w połączeniu z blokiem try/catch. Cokolwiek wewnątrz klauzuli "finally" zostanie wykonane niezależnie od tego, czy kod w bloku " try " wyrzuci wyjątek, czy nie.
  • "Finalize" jest wywoływane przez JVM, zanim obiekt zostanie odebrany jako śmieci.
 17
Author: Kevin R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-18 22:52:24

Ostateczne słowo kluczowe jest używane do deklarowania stałych.

final int FILE_TYPE = 3;

Słowo kluczowe finally jest używane w instrukcji try catch, aby określić blok kodu do wykonania niezależnie od wyrzuconych WYJĄTKÓW.

try
{
  //stuff
}
catch(Exception e)
{
  //do stuff
}
finally
{
  //this is always run
}

I wreszcie (haha), finalize im nie do końca pewne jest słowo kluczowe, ale istnieje finalize () funkcja w klasie obiektu.

 6
Author: ctrlc-root,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-18 22:52:36

Http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/

Deklaracja stałej końcowej.

Finally - blok finally jest wykonywany zawsze, gdy blok try się kończy, z wyjątkiem systemu.exit (0) Gwarantuje to, że blok finally zostanie wykonany, nawet jeśli wystąpi nieoczekiwany wyjątek. Ale wreszcie jest przydatny nie tylko do obsługi wyjątków-pozwala programiście uniknąć przypadkowego ominięcia kodu czyszczenia przez powrót, kontynuacja lub przerwa. Umieszczanie kodu oczyszczającego w bloku finally jest zawsze dobrą praktyką, nawet jeśli nie przewiduje się żadnych WYJĄTKÓW.

Finalize–) - metoda pomaga w usuwaniu śmieci. Metoda, która jest wywoływana przed odrzuceniem obiektu przez garbage collector, pozwalając mu oczyścić swój stan. Nie powinno być używane do uwalniania zasobów innych niż pamięć, takich jak uchwyty plików, gniazda, połączenia z bazami danych itp., Ponieważ Java ma tylko skończoną liczbę tych zasobów i nie wiesz kiedy śmieciarka zacznie działać, aby zwolnić te zasoby inne niż pamięć za pomocą metody finalize ().

Próbowałeś szukać w google i potrzebujesz wyjaśnienia?

 6
Author: Vorapsak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-18 23:12:06

Finał: finał jest słowem kluczowym. zmienna deklinowana jako końcowa powinna być zainicjowany tylko raz i nie można go zmienić. Zajęcia Java zadeklarowana jako ostateczna nie może zostać przedłużona. Metody deklarowane jako ostateczne nie można go przesłonić.

Wreszcie: wreszcie jest blok. blok finalny zawsze wykonuje się, gdy spróbuj zablokować wyjścia. Gwarantuje to, że blok finalny zostanie wykonany nawet jeśli wystąpi nieoczekiwany wyjątek. Ale w końcu jest przydatna dla więcej niż tylko obsługa wyjątków - pozwala programistom na unikaj przypadkowego ominięcia kodu czyszczenia przez zwrot, Kontynuuj, albo przerwij. Umieszczenie kodu porządkowego w bloku finalnym jest zawsze jest to dobra praktyka, nawet jeśli nie przewiduje się żadnych WYJĄTKÓW.

Finalizuj: finalize jest metodą. zanim obiekt zostanie odebrany, runtime System wywołuje metodę finalize (). Możesz napisać system zasoby uwalniają kod w metodzie finalize () przed pobraniem śmieci zebrane.

 6
Author: venom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-07 18:03:41

1. Finał * Final służy do nakładania ograniczeń na klasę, metodę i zmienną. * Ostateczna klasa nie może być dziedziczona, ostateczna metoda nie może być nadpisana i końcowa wartość zmiennej nie może być zmieniona. * Zmienne końcowe są inicjalizowane w momencie tworzenia, z wyjątkiem przypadku pustej zmiennej końcowej, która jest inicjowana w Konstruktorze. * Finał jest słowem kluczowym.

2. Wreszcie * Finally jest używany do obsługi wyjątków wraz z try and catch. * Zostanie wykonana czy wyjątek jest obsługiwany, czy nie. * Blok ten służy do zamykania zasobów takich jak połączenie z bazą danych, zasoby We/Wy. * Wreszcie jest blok.

3. Finalize * Finalize jest wywoływany przez wątek Garbage collection tuż przed zebraniem kwalifikujących się obiektów do wykonania czyszczenia przetwarzania. • Jest to ostatnia szansa dla obiektu na wykonanie jakiegokolwiek czyszczenia, ale ponieważ nie ma gwarancji, że finalize () zostanie wywołane, jego zła praktyka utrzymywania zasobów do finalize wywołania. • Finalize to metoda.

 2
Author: Mulalo Madida,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-05 21:42:07

Finał:

  • zmienne: wartość nie może być zmieniona po zainicjowaniu.
  • Metoda: metoda nie może być nadpisana przez podklasę.
  • Class: klasa nie może być podklasowana.

Wreszcie:

Słowo kluczowe finally jest używane w połączeniu z blokiem try/catch i gwarantuje, że część kodu zostanie wykonana, nawet jeśli zostanie wyrzucony wyjątek.

Finalize:

Automatyczny garbage collector wywołuje metodę finalize () tuż przed zniszczeniem obiektu. Klasa może zatem nadpisać metodę finalize () z klasy obiektu w celu zdefiniowania niestandardowego zachowania podczas garbage collection

 1
Author: roottraveller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-10 10:07:42