it-swarm-id.com

Di Jawa, apa tujuan kata kunci `final`,` akhirnya` dan `finalisasi 'dipenuhi?

Di Jawa, apa tujuan kata kunci final, finally dan finalize memenuhi?

82
Pat R Ellery

terakhir

final dapat digunakan untuk menandai variabel "tidak dapat diubah"

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

final juga dapat membuat metode tidak "ditimpa"

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

final juga bisa membuat kelas tidak "diwariskan". mis. kelas tidak dapat disubklasifikasikan.

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

akhirnya

finally digunakan dalam pernyataan try/catch to jalankan kode "selalu"

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

Java 7 memiliki percobaan baru dengan pernyataan sumber daya yang dapat Anda gunakan untuk secara otomatis menutup sumber daya yang secara eksplisit atau implisit mengimplementasikan Java.io.Closeable atau Java.lang. AutoCloseable

menyelesaikan

finalize dipanggil ketika sebuah objek dikumpulkan dari sampah. Anda jarang perlu menimpanya. Sebuah contoh:

protected void finalize() {
  //free resources (e.g. unallocate memory)
  super.finalize();
}
269
krico
  • "Final" menunjukkan bahwa sesuatu tidak dapat diubah. Anda biasanya ingin menggunakan ini pada variabel statis yang akan memiliki nilai yang sama sepanjang umur program Anda.
  • "Akhirnya" digunakan bersama dengan blok coba/tangkap. Apa pun di dalam klausa "akhirnya" akan dieksekusi terlepas dari apakah kode di blok 'coba' melempar pengecualian atau tidak.
  • "Finalisasi" dipanggil oleh JVM sebelum sebuah objek akan dikumpulkan sebagai sampah.
18
Kevin R

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

deklarasi final - konstan.

akhirnya - Blok akhirnya selalu dijalankan ketika blok coba keluar, kecuali panggilan System.exit (0). Ini memastikan bahwa blok akhirnya dieksekusi bahkan jika pengecualian yang tidak terduga terjadi. Tetapi akhirnya bermanfaat untuk lebih dari sekadar penanganan pengecualian - ini memungkinkan programmer untuk menghindari kode pembersihan yang tidak sengaja dilewati oleh pengembalian, melanjutkan, atau merusak. Menempatkan kode pembersihan di blok akhirnya selalu merupakan praktik yang baik, bahkan ketika tidak ada pengecualian yang diantisipasi.

finalize () - metode membantu pengumpulan sampah. Metode yang dipanggil sebelum objek dibuang oleh pengumpul sampah, yang memungkinkannya untuk membersihkan kondisinya. Seharusnya tidak digunakan untuk melepaskan sumber daya non-memori seperti pegangan file, soket, koneksi basis data dll karena Java hanya memiliki jumlah terbatas dari sumber daya ini dan Anda tidak tahu kapan pengumpulan sampah akan dimulai untuk lepaskan sumber daya non-memori ini melalui metode finalize ().

Apakah Anda mencoba mencari di google, dan perlu klarifikasi untuk penjelasan?

6
Vorapsak

Kata kunci terakhir digunakan untuk mendeklarasikan konstanta.

final int FILE_TYPE = 3;

Kata kunci terakhir digunakan dalam pernyataan coba tangkap untuk menentukan blok kode yang akan dieksekusi terlepas dari pengecualian yang dilemparkan.

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

Dan akhirnya (haha), finalize im tidak sepenuhnya yakin adalah kata kunci, tetapi ada fungsi finalize () di kelas Object.

6
ctrlc-root

final: final adalah kata kunci. Variabel yang dideklarasikan sebagai final harus diinisialisasi hanya sekali dan tidak dapat diubah. Java kelas yang dinyatakan sebagai final tidak dapat diperpanjang. Metode yang dinyatakan final tidak dapat ditimpa.

akhirnya: akhirnya adalah sebuah blok. Blok akhirnya selalu dijalankan ketika blok coba keluar. Ini memastikan bahwa blok akhirnya dijalankan bahkan jika pengecualian yang tidak terduga terjadi. Tetapi akhirnya bermanfaat untuk lebih dari sekadar penanganan pengecualian - ini memungkinkan programmer untuk menghindari kode pembersihan yang tidak sengaja dilewati oleh pengembalian, melanjutkan, atau merusak. Menempatkan kode pembersihan di blok akhirnya selalu merupakan praktik yang baik, bahkan ketika tidak ada pengecualian yang diantisipasi.

finalisasi: finalisasi adalah sebuah metode. Sebelum suatu objek dikumpulkan, sistem runtime memanggil metode finalisasinya (). Anda bisa menulis kode rilis sumber daya sistem dalam metode finalize () sebelum mengumpulkan sampah.

6
venom

1. Final • Final digunakan untuk menerapkan batasan pada kelas, metode dan variabel. • Kelas final tidak dapat diwarisi, metode akhir tidak bisa diganti dan nilai variabel akhir tidak dapat diubah. • Variabel akhir diinisialisasi pada saat pembuatan kecuali dalam kasus variabel akhir kosong yang diinisialisasi dalam Konstruktor. • Final adalah kata kunci.

2. Akhirnya • Akhirnya digunakan untuk penanganan pengecualian bersama dengan mencoba dan menangkap. • Ini akan dieksekusi apakah pengecualian ditangani atau tidak. • Blok ini digunakan untuk menutup sumber daya seperti koneksi basis data, sumber daya I/O. • Akhirnya adalah sebuah blok.

. Finalisasi • Finalisasi dipanggil oleh thread pengumpulan Sampah sebelum mengumpulkan objek yang memenuhi syarat untuk melakukan pemrosesan pembersihan. • Ini adalah kesempatan terakhir bagi objek untuk melakukan pembersihan tetapi karena tidak dijamin apakah finalisasi () akan dipanggil, praktik buruknya adalah menjaga sumber daya hingga finalisasi panggilan. • Finalisasi adalah metode.

2
Mulalo Madida