{"id":11303,"date":"2021-10-07T10:56:01","date_gmt":"2021-10-07T07:56:01","guid":{"rendered":"https:\/\/www.kampuskod.com\/?p=11303"},"modified":"2021-10-07T10:56:01","modified_gmt":"2021-10-07T07:56:01","slug":"java-immutable-ve-mutable-nedir-java-dersleri","status":"publish","type":"post","link":"https:\/\/www.kampuskod.com\/yazilim\/java\/java-immutable-ve-mutable-nedir-java-dersleri\/","title":{"rendered":"Java \u0130mmutable ve Mutable Nedir? – Java Dersleri"},"content":{"rendered":"

Immutable (de\u011fi\u015fmez) s\u0131n\u0131flar<\/strong>, nesneleri bir kez olu\u015fturulduktan sonra nesne i\u00e7eri\u011fi de\u011fi\u015ftirilemeyen s\u0131n\u0131flard\u0131r. Asl\u0131nda sabit s\u0131n\u0131flar olarakta isimlendirebiliriz. Nesneyi olu\u015ftururken i\u00e7erisinde bulunacak olan de\u011ferleri verirseniz ve sonras\u0131nda bu de\u011ferleri de\u011fi\u015ftiremezsiniz. E\u011fer bir immutable nesnenin state’ini de\u011fi\u015ftirmek isterseniz vermek istedi\u011finiz state’i ta\u015f\u0131yacak olan yeni bir nesne olu\u015fturmak zorundas\u0131n\u0131z.<\/strong> Boolean, Short, Integer, Long, Float, Double, Char ve String gibi t\u00fcm kapsay\u0131c\u0131 s\u0131n\u0131flar (Wrapper Class)<\/strong> java’da immutable s\u0131n\u0131flara \u00f6rnek olarak g\u00f6sterilebilir. Tam tersi olarak, de\u011fi\u015ftirilebilen s\u0131n\u0131flar da\u00a0Mutable (de\u011fi\u015febilir)<\/strong>\u00a0s\u0131n\u0131flard\u0131r.<\/p>\n

Peki neden immutable s\u0131n\u0131flara ihtiyac\u0131m\u0131z var?<\/h2>\n

Sorumuzun cevabun\u0131 hemen verelim \ud83d\ude42 Bir s\u0131n\u0131f\u0131 thread-safe yapmak istiyorsan\u0131z immutable yapman\u0131z gerekmektedir. Immutable nesnelerin de\u011ferleri de\u011fi\u015fmeyece\u011fi i\u00e7in \u00fczerinde ne kadar thread \u00e7al\u0131\u015f\u0131rsa \u00e7al\u0131\u015fs\u0131n hep ayn\u0131 de\u011ferler \u00fczerinden i\u015flem yap\u0131lacakt\u0131r. Bu noktada ortaya \u00e7\u0131kan bir dezavantajl\u0131k s\u00f6z konusuda var tabii. Immutable nesnelerin dezavantaj\u0131 ise, de\u011ferin de\u011fi\u015fmesini istiyorsak yeni bir nesne olu\u015fturmam\u0131z gerekiyor. Bu da zaman, bellek ve garbage collector maliyetleri olu\u015fturmaktad\u0131r.<\/p>\n

Java’da immutable s\u0131n\u0131f nas\u0131l olu\u015fturulur?<\/h2>\n
    \n
  • S\u0131n\u0131f\u0131,\u00a0final<\/strong> anahtar\u0131 ile i\u015faretleyin, b\u00f6ylece extend (kal\u0131t\u0131m) edemezsiniz.<\/li>\n
  • S\u0131n\u0131f\u0131n t\u00fcm alanlar\u0131n\u0131\u00a0private<\/strong> yap\u0131n, b\u00f6ylece do\u011frudan eri\u015fime izin vermezsiniz.<\/li>\n
  • De\u011fi\u015fkenler i\u00e7in\u00a0setter<\/strong> metodu koymay\u0131n.<\/li>\n
  • T\u00fcm de\u011fi\u015ftirilebilen alanlar\u0131\u00a0final<\/strong>\u00a0yap\u0131n, b\u00f6ylece yaln\u0131zca bir kez atanabilir.<\/li>\n
  • T\u00fcm alanlara, constructor<\/strong> arac\u0131l\u0131\u011f\u0131yla ilk de\u011ferlerini atay\u0131n.<\/li>\n
  • De\u011fi\u015ftirebilir olan t\u00fcm alanlar\u0131n d\u0131\u015far\u0131ya nesnelerin klonlanarak d\u00f6nmesini ger\u00e7ekle\u015ftirin.<\/li>\n<\/ul>\n

    \u00d6rnek bir Immutable S\u0131n\u0131f yap\u0131s\u0131 a\u015fa\u011f\u0131daki gibidir:<\/p>\n

    public final class ImmutablePerson {\r\n\r\n    private final String name;\r\n\r\n    public ImmutablePerson(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n}<\/pre>\n

     <\/p>\n","protected":false},"excerpt":{"rendered":"

    Immutable (de\u011fi\u015fmez) s\u0131n\u0131flar, nesneleri bir kez olu\u015fturulduktan sonra nesne i\u00e7eri\u011fi de\u011fi\u015ftirilemeyen s\u0131n\u0131flard\u0131r. Asl\u0131nda sabit s\u0131n\u0131flar olarakta isimlendirebiliriz. Nesneyi olu\u015ftururken i\u00e7erisinde bulunacak olan de\u011ferleri verirseniz ve sonras\u0131nda bu de\u011ferleri de\u011fi\u015ftiremezsiniz. E\u011fer bir immutable nesnenin state’ini de\u011fi\u015ftirmek isterseniz vermek istedi\u011finiz state’i ta\u015f\u0131yacak olan yeni bir nesne olu\u015fturmak zorundas\u0131n\u0131z. Boolean, Short, Integer, Long, Float, Double, Char ve String […]<\/p>\n","protected":false},"author":4,"featured_media":11306,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"tdm_status":"","tdm_grid_status":""},"categories":[3414],"tags":[420,3435,6105,6106],"_links":{"self":[{"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/posts\/11303"}],"collection":[{"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/comments?post=11303"}],"version-history":[{"count":3,"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/posts\/11303\/revisions"}],"predecessor-version":[{"id":11307,"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/posts\/11303\/revisions\/11307"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/media\/11306"}],"wp:attachment":[{"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/media?parent=11303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/categories?post=11303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kampuskod.com\/wp-json\/wp\/v2\/tags?post=11303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}