Sobes.tech
Middle

Java-ში final და finalize საკვანძო სიტყვები რა არის და რა განსხვავებაა მათ შორის?

sobes.tech AI

პასუხი AI-სგან

final - უცვლელობის ნიშნად გამოყენებული საკვანძო სიტყვა:

  • მოძრავი: მითითებული სიგნალი ან მნიშვნელობა ვერ შეიცვლება ინიციალიზაციის შემდეგ.
  • მეთოდი: მეთოდი ვერ იქნება გადაფარებული შვილობილი კლასში.
  • კლასი: კლასი ვერ იქნება მემკვიდრეობით მიღებული.

finalize() - მეთოდი, რომელიც იძახება მტვრის შეგროვებლის (Garbage Collector) მიერ ობიექტის მეხსიერებიდან ამოღების წინ. იგი განკუთვნილია გარე რესურსების გათავისუფლებისთვის და განთავსებულია Object კლასში.

შედარება:

final finalize()
საკვანძო სიტყვა მეთოდი
უცვლელობის ნიშნად ობიექტის წაშლის წინ იძახება
დაკავშირებულია გამოცხადებასთან დაკავშირებულია ობიექტის სიცოცხლის ციკლთან
გამოიყენება ცვლადებზე, მეთოდებზე, კლასებზე გამოიყენება მხოლოდ ობიექტებზე

final-ის გამოყენების მაგალითი:

public class FinalExample {
    final int finalVariable = 10;

    final void finalMethod() {
        // უცვლელი მეთოდის ლოგიკა
    }
}

final class FinalClass {
    // შიგთავსი
}

finalize()-ის გამოყენების მაგალითი:

public class FinalizeExample {
    @Override
    protected void finalize() throws Throwable {
        try {
            // გარე რესურსების გაწმენდა, მაგალითად კავშირის დახურვა
            System.out.println("Finalizing FinalizeExample object...");
        } finally {
            super.finalize(); // ყოველთვის გამოიძახეთ super.finalize()
        }
    }
}

მნიშვნელოვანია: finalize()-ის გამოყენება არ არის რეკომენდებული თანამედროვე Java-ში, რადგან მისი შესრულების დრო უცნობია და შეიძლება გამოიწვიოს შესრულების პრობლემები. რესურსების მართვისთვის უკეთესია გამოიყენოთ try-with-resources ბლოკები.