Finalize ialah kaedah dalam Java. Kaedah memuktamadkan () ini serupa dengan kaedah utama. Kaedah memuktamadkan () ini dipanggil sebelum objek dikumpul sampah. Ini bermakna peluang terakhir objek asal untuk melakukan aktiviti pembersihan seperti melepaskan sumber sistem, menutup sambungan seperti pangkalan data, sambungan terbuka fail, dll. Masalah utama dengan kaedah pemuktamadkan ialah tiada jaminan oleh Spesifikasi Bahasa Java (JLS) yang akan dipanggil oleh pemungut sampah atau bila ia akan dipanggil. Mari kita pertimbangkan contoh bahawa objek mungkin menunggu sehingga masa yang tidak ditentukan selepas objek itu layak untuk pengumpulan sampah. Ini bermakna sebelum kaedah finalize() dipanggil. Dengan cara yang sama, selepas memuktamadkan kaedah yang dipanggil ia bukan jaminan, ia akan segera dikumpulkan. Jadi tidak ada gunanya melakukan aktiviti kritikal dalam kaedah finalize(). Ia mungkin berfungsi dalam satu JVM, dan ia mungkin tidak berfungsi dalam JVM lain pada masa kaedah development.finalize() tersedia di dalam java.lang.Object supaya ia tersedia secara automatik kepada semua kelas untuk mengatasi kerana Object ialah kelas ' kelas asas.
Kaedah memuktamadkan () ini dipanggil sebelum objek dikumpul sampah, jadi ini bermakna kita tidak boleh memanggil kaedah finalize() secara manual sama seperti kaedah Java yang lain. kaedah finalize() dipanggil sekali sahaja oleh garbage collector(GC) thread.
IKLAN Kursus Popular dalam kategori ini PEMODELAN & PENILAIAN KEWANGAN - Pengkhususan | 51 Siri Kursus | 30 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Kod:
protected void finalize throws Throwable { //write some code }
Kaedah finalize() mempunyai pelaksanaan kosong, dan dalam kelas kami, terdapat aktiviti pembersihan, maka kami perlu mengatasi kaedah finalize() ini untuk menentukan aktiviti pembersihan kami.
Di bawah adalah beberapa contoh yang dinyatakan:
Memuktamadkan contoh kaedah mengatasi pengguna kaedah
Kod:
Main.java
//creating class public class Main { //main method for run the Java application public static void main(String[] args) { //Creating String object with some content String string = new String("I am Amardeep"); //make the string reference to null for allow it for Garbage Collection string = null; // Calling gc method for Garbage Collection System.gc(); //displaying some message to the user System.out.println("\tI am in Main method"); } //We are Overriding finalize method. public void finalize() { //displaying some message to the user System.out.println("\tI am feeling that I am Overriding finalize method"); } }
Output:
Penjelasan: Jika anda melihat output di atas, anda mungkin terkejut kerana anda tidak memuktamadkan kaedah mengatasi. Jika anda memerhati dengan teliti kod yang bukan Java sebenar yang diberikan kaedah overridden, ia sama seperti kaedah yang dicipta pengguna seperti yang kita tahu kaedah pemuktamad sebenar tandatangan dilindungi void finalize(). Jadi kami tidak mendapat ini dalam output.
Memuktamadkan kaedah mengatasi contoh kaedah sebenar
Kod:
Main.java
//creating class public class Main { //main method for run the Java application public static void main(String[] args) { //Creating Main object Main main = new Main(); //make the main reference to null for allow it for Garbage Collection main = null; // Calling gc method for Garbage Collection System.gc(); //displaying some message to the user System.out.println("\tI am Amardeep from main method"); } //We are Overriding finalize method. @Override protected void finalize() { //displaying some message to the user System.out.println("\tI am actaully Overriding now."); } }
Output:
Penjelasan: Seperti yang kita lihat dalam output di atas, kita memuktamadkan() output kaedah kerana mengatasi kaedah finalize() sebenar.
Memuktamadkan kaedah daripada contoh blok akhirnya
Kod:
Main.java
//creating class public class Main { //main method for run the Java application public static void main(String[] args) { //Creating Main object Main main = new Main(); //make the main reference to null for allow it for Garbage Collection main = null; // Calling gc method for Garbage Collection System.gc(); //displaying some message to the user System.out.println("\tI am Amardeep from main method"); } //We are Overriding finalize method. @Override protected void finalize() throws Throwable { try{ //displaying some message to the user System.out.println("\tFinalize of Paramesh"); }catch(Throwable t){ throw t; }finally{ //displaying some message to the user System.out.println("\tCalling finalize from finally block"); super.finalize(); } } }
Output:
Memuktamadkan kaedah tidak dijamin contoh
Kod:
FinalizeNotGuarantee.java
//package com.finalize; public class FinalizeNotGuranteed implements Runnable { //user defined method private void getMyMethod() throws InterruptedException { //try block try { System.out.println("Hi, I am TRY"); throw new NullPointerException(); //catch block } catch (NullPointerExceptionnpe) { System.out.println("Hi, Iam CATCH"); //finally block } finally { System.out.println("Hi, I am FINALLY"); } } //overriding finalize method @Override protected void finalize() throws Throwable { System.out.println("I am kinside finalize block"); super.finalize(); } //overriding Thread run method @Override public void run() { try { getMyMethod(); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { for (int i = 1; i<= 3; i++) { //start the thread method run by using start method new Thread(new FinalizeNotGuranteed()).start(); } } }
Output:
Penjelasan: Contoh di atas jelas menggambarkan bahawa kaedah pemuktamad tidak selalu menjamin untuk dilaksanakan.
Kaedah Java memuktamadkan () digunakan untuk mengumpul objek kutipan sampah. Kaedah ini dipanggil sebelum kaedah GC() dipanggil. Kaedah ini tidak selalu dijamin untuk dilaksanakan.
Atas ialah kandungan terperinci Memuktamadkan di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!