Middle
Mis on Java keeles final ja finalize ning milles nende erinevus seisneb?
sobes.tech AI
Vastus AI-lt
final - võtmesõna, mis tähistab muutumatust:
- Muutuja: viide või väärtus ei saa pärast initsialiseerimist muutuda.
- Meetod: meetodit ei saa alampõhklassis üle kirjutada.
- Klass: klassi ei saa pärida.
finalize() - meetod, mida kutsutakse prügikoristaja (Garbage Collector) enne objekti mälust kustutamist. See asub Object klassis ja on mõeldud väliste ressursside vabastamiseks.
Võrdlus:
final |
finalize() |
|---|---|
| Võtmesõna | Meetod |
| Näitab muutumatust | Kutsutakse enne objekti kustutamist |
| Seotud deklaratsiooniga | Seotud objekti elutsükliga |
| Rakendub muutujatele, meetoditele, klassidele | Rakendub ainult objektidele |
final näide:
public class FinalExample {
final int finalVariable = 10;
final void finalMethod() {
// muutumatu meetodi loogika
}
}
final class FinalClass {
// sisu
}
finalize() näide:
public class FinalizeExample {
@Override
protected void finalize() throws Throwable {
try {
// väliste ressursside puhastamine, näiteks ühenduse sulgemine
System.out.println("Finalizing FinalizeExample object...");
} finally {
super.finalize(); // alati kutsuge super.finalize()
}
}
}
Oluline: finalize() kasutamine ei ole kaasaegses Java-s soovitatav, kuna selle täitmise aeg on ettearvamatu ning see võib põhjustada jõudluse probleeme. Ressursside haldamiseks on parem kasutada try-with-resources plokke.