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("FinalizeExample объектини якунлаш...");
} finally {
super.finalize(); // Ҳаммасига super.finalize() чақиринг
}
}
}
Маҳз: finalize()дан фойдаланиш замонавий Javaда тавсия этилмайди, чунки унинг бажарилиш вақти олдиндан билмайди ва ишлаш самарадорлигига таъсир қилиши мумкин. Ресурсларни бошқариш учун try-with-resources блокларидан фойдаланиш маъқул.