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 ბლოკები.