Junior
Чаро дар баъзе интерфейсҳо усулҳо муайян намешаванд?
sobes.tech AI
Ҷавоб аз AI
Интерфейсҳои маркер (интерфейсҳои нишондиҳанда) методҳоро муайян намекунанд. Онҳо барои нишон додани синф истифода мешаванд, ки дорои хусусият ё имконияти муайян мебошанд.
Масаланҳои интерфейсҳои маркер:
java.io.Serializable: Синфро нишон медиҳад, ки объекти он метавонад сериализатсия шавад.java.lang.Cloneable: Синфро нишон медиҳад, ки объекти он метавонад клон карда шавад (аз ҷумла, дастгирии методиclone()).java.util.RandomAccess: Листҳоро нишон медиҳад, ки дастрасии зуд (дар вақти доимӣ) ба унсурҳои онҳо доранд.
Истифодаи интерфейсҳои маркер имкон медиҳад:
- Шенасоии синфҳо: Санҷиши намуди объект бо истифода аз оператори
instanceof.// санҷиш, ки оё объект сериализатсияшаванда аст if (object instanceof Serializable) { // сериализатсияро иҷро кунед } - Тавзеҳ додани рафтор: API-ҳо метавонанд рафторро дар асоси он, ки оё синф интерфейси маркерро иҷро мекунад ё не, тағир диҳанд. Масалан, агар рӯйхат
RandomAccess-ро иҷро кунад, амалҳо дар болои он метавонанд оптимизатсия шаванд. - Маҳдуд кардани дастрасӣ: Баъзе API-ҳо метавонанд талаб кунанд, ки объектҳое, ки ба онҳо дода мешаванд, интерфейси маркерро иҷро кунанд.
- Эзоҳҳо: Дар равишҳои муосир, бисёре аз сенарияҳои истифодаи интерфейсҳои маркер тавассути annotations амалӣ карда мешаванд. Аммо, интерфейсҳои маркер дар китобхонаи стандартии Java ва коди legacy ҳоло ҳам истифода мешаванд.