Sobes.tech
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 ҳоло ҳам истифода мешаванд.