{"id":31,"date":"2014-05-26T12:06:23","date_gmt":"2014-05-26T12:06:23","guid":{"rendered":"http:\/\/vkrastev1blog.com\/?p=31"},"modified":"2014-05-26T15:36:27","modified_gmt":"2014-05-26T15:36:27","slug":"java-generics-explained-in-short-form-with-examples","status":"publish","type":"post","link":"https:\/\/vkrastev1blog.com\/2014\/05\/26\/java-generics-explained-in-short-form-with-examples\/","title":{"rendered":"Java jenerikleri \u00f6rneklerle k\u0131sa bi\u00e7imde a\u00e7\u0131klanm\u0131\u015ft\u0131r"},"content":{"rendered":"<p>Daha fazla bilgi i\u00e7in l\u00fctfen bu SSS&#8217;ye bak\u0131n:<\/p>\n<p><a href=\"http:\/\/www.angelikalanger.com\/GenericsFAQ\/JavaGenericsFAQ.html#SECTION1\" rel=\"nofollow\">http:\/\/www.angelikalanger.com\/GenericsFAQ\/JavaGenericsFAQ.html#SECTION1<\/a><\/p>\n<p>K\u0131saca bu SSS&#8217;deki baz\u0131 \u00f6nemli noktalar\u0131 burada bulabilirsiniz.<\/p>\n<p>\u00d6rnek (genel t\u00fcrden):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f \u00c7ift&lt;X,Y&gt; {\u00a0<\/tt><br \/>\n<tt> \u00a0 \u00f6nce \u00f6zel X;<\/tt><br \/>\n<tt> \u00a0 \u00f6zel Y saniye;<\/tt><tt> \u00a0 genel \u00c7ift(X a1, Y a2) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 birinci = a1;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 ikinci = a2;<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 public X getFirst() { \u00f6nce d\u00f6n; }<\/tt><br \/>\n<tt> \u00a0 public Y getSecond() { ikinci d\u00f6n\u00fc\u015f; }<\/tt><br \/>\n<tt> \u00a0 public void setFirst(X arg)\u00a0 { ilk = arg; }<\/tt><br \/>\n<tt> \u00a0 public void setSecond(Y arg) { saniye = arg; }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>s\u0131n\u0131f <tt> \u00c7ift<\/tt> iki tip parametresi vard\u0131r <tt> X <\/tt> Ve <tt> e<\/tt> .\u00a0 Genel t\u00fcr de\u011fi\u015ftirildi\u011finde bunlar\u0131n yerini t\u00fcr ba\u011f\u0131ms\u0131z de\u011fi\u015fkenleri al\u0131r. <tt> \u00c7ift<\/tt> somutla\u015ft\u0131r\u0131lm\u0131\u015ft\u0131r. Mesela beyannamede <tt> \u00c7ift&lt;Dize, Tarih&gt;<\/tt> t\u00fcr parametresi <tt> X<\/tt> type arg\u00fcman\u0131 ile de\u011fi\u015ftirilir <tt> Sicim<\/tt> Ve <tt> e<\/tt> \u015fununla de\u011fi\u015ftirilir:\u00a0 <tt> Tarih<\/tt> .<br \/>\nTan\u0131mlay\u0131c\u0131lar\u0131n kapsam\u0131 <tt> X <\/tt> Ve <tt> e<\/tt> \u00f6yle<b> <i> <\/i> <\/b> s\u0131n\u0131f\u0131n tam tan\u0131m\u0131.\u00a0 Bu kapsamda iki tip parametre <tt> X <\/tt> Ve <tt> e<\/tt> t\u00fcrlermi\u015f gibi kullan\u0131l\u0131rlar (baz\u0131 k\u0131s\u0131tlamalarla). Yukar\u0131daki \u00f6rnekte type parametreleri, \u00f6rnek y\u00f6ntemlerinin arg\u00fcman ve d\u00f6n\u00fc\u015f t\u00fcr\u00fc ve \u00f6rnek alanlar\u0131n\u0131n t\u00fcrleri olarak kullan\u0131lm\u0131\u015ft\u0131r.<br \/>\nT\u00fcr parametreleri s\u0131n\u0131rlarla bildirilebilir. S\u0131n\u0131rlar, type parametresinin temsil etti\u011fi bilinmeyen t\u00fcrdeki y\u00f6ntemlere eri\u015fim sa\u011flar. \u00d6rne\u011fimizde bilinmeyen t\u00fcrdeki y\u00f6ntemleri \u00e7a\u011f\u0131rm\u0131yoruz. <tt> X <\/tt> Ve <tt> e<\/tt> . Bu nedenle iki t\u00fcr parametresi s\u0131n\u0131rs\u0131zd\u0131r.<\/p>\n<p>\u00d6rnek (somut parametreli tipte):<\/p>\n<blockquote><p><tt> genel ge\u00e7ersiz printPair(<b> <span style=\"color:#000099;\"> \u00c7ift&lt;Dize, Uzun&gt;<\/span> <\/b> \u00e7ift) {<\/tt><br \/>\n<tt> \u00a0 System.out.println(\"(\"+pair.getFirst()+\",+pair.getSecond()+\")\");<\/tt><br \/>\n<tt> }<\/tt><tt> <b> <span style=\"color:#000099;\"> \u00c7ift&lt;Dize, Uzun&gt;<\/span> <\/b> s\u0131n\u0131r = yeni <b> <span style=\"color:#000099;\"> \u00c7ift&lt;Dize, Uzun&gt;<\/span> <\/b> (\"maksimum\",1024L);<\/tt><br \/>\n<tt> printPair(limit);<\/tt><\/p><\/blockquote>\n<p>\u00d6rnek (joker karakterle parametrelendirilmi\u015f t\u00fcr):<\/p>\n<blockquote>\n<blockquote><p><tt> genel ge\u00e7ersiz printPair(<b> <span style=\"color:#000099;\"> \u00c7ift&lt;?,?&gt;<\/span> <\/b> \u00e7ift) {<\/tt><br \/>\n<tt> \u00a0 System.out.println(\"(\"+pair.getFirst()+\",+pair.getSecond()+\")\");<\/tt><br \/>\n<tt> }<\/tt><tt> <b> <span style=\"color:#000099;\"> \u00c7ift&lt;?,?&gt;<\/span> <\/b> s\u0131n\u0131r = yeni <b> <span style=\"color:#000099;\"> \u00c7ift&lt;Dize, Uzun&gt;<\/span> <\/b> (\"maksimum\",1024L);<\/tt><br \/>\n<tt> printPair(limit);<\/tt><\/p><\/blockquote>\n<\/blockquote>\n<p>Genel bir t\u00fcr\u00fcn t\u00fcm \u00f6rnekleri ayn\u0131 \u00e7al\u0131\u015fma zaman\u0131 t\u00fcr\u00fc temsilini, yani ham t\u00fcr\u00fcn temsilini payla\u015f\u0131r. \u00d6rne\u011fin, genel bir t\u00fcr\u00fcn \u00f6rnekleri <tt> Liste<\/tt> , \u00f6rne\u011fin <tt> Liste&lt;Tarih&gt;<\/tt> , <tt> List&lt;String&gt;<\/tt> , <tt> Liste&lt;Long&gt;<\/tt> vb. derleme zaman\u0131nda farkl\u0131 statik t\u00fcrlere sahiptir ancak ayn\u0131 dinamik t\u00fcre sahiptir <tt> Liste <\/tt> \u00e7al\u0131\u015fma zaman\u0131nda.<\/p>\n<p>Bir oyuncu kadrosu iki b\u00f6l\u00fcmden olu\u015fur:<\/p>\n<ul>\n<li>derleme zaman\u0131nda derleyici taraf\u0131ndan ger\u00e7ekle\u015ftirilen statik tip kontrol\u00fc ve<\/li>\n<li>\u00e7al\u0131\u015fma zaman\u0131nda sanal makine taraf\u0131ndan ger\u00e7ekle\u015ftirilen dinamik t\u00fcr kontrol\u00fc.<\/li>\n<\/ul>\n<p>Statik k\u0131s\u0131m, ba\u015far\u0131l\u0131 olamayan sa\u00e7ma sapan yay\u0131nlar\u0131 (\u00f6r. <tt> Sicim<\/tt> O <tt> Tarih<\/tt> veya itibaren <tt> List&lt;String&gt;<\/tt> O <tt> Liste&lt;Tarih&gt;<\/tt> .<\/p>\n<p>Dinamik k\u0131s\u0131m, \u00e7al\u0131\u015fma zaman\u0131 t\u00fcr bilgisini kullan\u0131r ve \u00e7al\u0131\u015fma zaman\u0131nda bir t\u00fcr kontrol\u00fc ger\u00e7ekle\u015ftirir.\u00a0 Bir y\u00fckseltir <tt> ClassCastException<\/tt> nesnenin dinamik t\u00fcr\u00fc, d\u00f6n\u00fc\u015f\u00fcm\u00fcn hedef t\u00fcr\u00fc (veya hedef t\u00fcr\u00fcn\u00fcn bir alt t\u00fcr\u00fc) de\u011filse. Dinamik par\u00e7al\u0131 oyuncu kadrosuna \u00f6rnek olarak \u015funlar verilebilir: <tt> Nesne<\/tt> O <tt> Sicim<\/tt> veya itibaren <tt> Nesne<\/tt> O <tt> List&lt;String&gt;<\/tt> .\u00a0 Bunlar, bir \u00fcst tipten bir alt tipe kadar a\u015fa\u011f\u0131ya do\u011fru olanlard\u0131r.<\/p>\n<p>Somut parametreli t\u00fcrlerin \u00f6rnekleri \u015funlard\u0131r: <tt> List&lt;String&gt;<\/tt> , <tt> Harita&lt;Dize, Tarih&gt;<\/tt> , ama de\u011fil <tt> Liste&lt;? Number&gt;'yi geni\u015fletiyor<\/tt> veya <tt> Harita&lt;String,?&gt;<\/tt> .<\/p>\n<p>Bazen beklenir ki <tt> List&lt;Object&gt;<\/tt> bir s\u00fcper tip olurdu <tt> List&lt;String&gt;<\/tt> , \u00c7\u00fcnk\u00fc <tt> Nesne<\/tt> bir s\u00fcper t\u00fcr\u00fcd\u00fcr <tt> Sicim<\/tt> .\u00a0 Bu beklenti diziler i\u00e7in b\u00f6yle bir ili\u015fkinin mevcut olmas\u0131ndan kaynaklanmaktad\u0131r:\u00a0 <tt> Nesne[]<\/tt> bir s\u00fcper t\u00fcr\u00fcd\u00fcr <tt> Sicim[]<\/tt> , \u00c7\u00fcnk\u00fc <tt> Nesne<\/tt> bir s\u00fcper t\u00fcr\u00fcd\u00fcr <tt> Sicim<\/tt> . (Bu t\u00fcr bir ili\u015fki \u015fu \u015fekilde bilinir: <i> kovaryans<\/i> .) Bile\u015fen t\u00fcrlerinin s\u00fcper alt t\u00fcr ili\u015fkisi, kar\u015f\u0131l\u0131k gelen dizi t\u00fcrlerine kadar uzan\u0131r. Genel t\u00fcrlerin \u00f6rnekleri i\u00e7in b\u00f6yle bir t\u00fcr ili\u015fkisi mevcut de\u011fildir. (Parametreli tipler <i> Olumsuz<\/i> kovaryant.)<\/p>\n<p>Ayn\u0131 genel t\u00fcr\u00fcn \u00f6rnekleri aras\u0131nda bir \u00fcst alt t\u00fcr ili\u015fkisinin bulunmamas\u0131n\u0131n \u00e7e\u015fitli sonu\u00e7lar\u0131 vard\u0131r.\u00a0 \u0130\u015fte bir \u00f6rnek.<\/p>\n<p>\u00d6rnek:<\/p>\n<p><tt> void printAll(ArrayList&lt;Object&gt; c) {<\/tt><br \/>\n<tt> \u00a0 i\u00e7in (Nesne o : c)\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 System.out.println(o);<\/tt><br \/>\n<tt> }<\/tt><tt> ArrayList&lt;String&gt; listesi = new ArrayList&lt;String&gt;();<\/tt><br \/>\n<tt> ... listeyi doldur ...<\/tt><br \/>\n<tt> printAll(liste);\u00a0\u00a0 \/\/ hata<\/tt><\/p>\n<p>A <tt> DiziList&lt;String&gt;<\/tt> nesne, talep eden bir y\u00f6nteme arg\u00fcman olarak aktar\u0131lamaz. <tt> DiziList&lt;Object&gt;<\/tt> \u00e7\u00fcnk\u00fc iki t\u00fcr ayn\u0131 genel t\u00fcr\u00fcn \u00f6rnekleridir, ancak <i> farkl\u0131<\/i> tip arg\u00fcmanlar\u0131 vard\u0131r ve bu nedenle birbirleriyle uyumlu de\u011fildirler.<\/p>\n<p>Somut parametreli t\u00fcrler, genel bir t\u00fcr\u00fcn somut \u00f6rnekleridir.\u00a0 Neredeyse benzer tiplerdir; yaln\u0131zca birka\u00e7 k\u0131s\u0131tlama vard\u0131r.\u00a0 A\u015fa\u011f\u0131daki ama\u00e7larla KULLANILAMAZ:<\/p>\n<ul>\n<li>dizilerin olu\u015fturulmas\u0131 i\u00e7in<\/li>\n<li>istisna i\u015flemede<\/li>\n<li>bir s\u0131n\u0131fta<\/li>\n<li>bir \u015fekilde <tt> \u00f6rne\u011fi<\/tt> ifade<\/li>\n<\/ul>\n<p>T\u00fcr\u00fc somut parametreli t\u00fcr olan \u00f6\u011feleri tutan diziler yasa d\u0131\u015f\u0131d\u0131r.<\/p>\n<p>\u00d6rnek (ge\u00e7ersiz dizi t\u00fcr\u00fc):<\/p>\n<p><tt> statik bo\u015fluk testi() {<\/tt><br \/>\n<tt> \u00a0 <b> <span style=\"color:#660000;\"> \u00c7ift&lt;Tamsay\u0131,Tamsay\u0131&gt;[]<\/span> <\/b> intPairArr = yeni <b> <span style=\"color:#660000;\"> \u00c7ift&lt;Tamsay\u0131,Tamsay\u0131&gt;[10]<\/span> <\/b> ; <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0 addElements(intPairArr);\u00a0<\/tt><br \/>\n<tt> \u00a0 Pair&lt;Tamsay\u0131,Tamsay\u0131&gt; \u00e7ift = intPairArr[1];<\/tt><br \/>\n<tt> \u00a0 Tamsay\u0131 i = \u00e7ift.getFirst();<\/tt><br \/>\n<tt> \u00a0 \u00e7ift.setSecond(i);<\/tt><br \/>\n<tt> }<\/tt><br \/>\n<tt> statik void addElements (<b> Nesne[]<\/b> objArr) {<\/tt><br \/>\n<tt> \u00a0 objArr[0] = new Pair&lt;Tamsay\u0131,Tamsay\u0131&gt;(0,0);<\/tt><br \/>\n<tt> \u00a0 objArr[1] = new Pair&lt;String,String&gt;(\"\"\");\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ ArrayStoreException ile ba\u015far\u0131s\u0131z olmal\u0131<\/tt><br \/>\n<tt> }<\/tt><\/p>\n<p>Derleyici, bile\u015fen t\u00fcr\u00fc somut parametreli t\u00fcr olan dizilerin olu\u015fturulmas\u0131n\u0131 yasaklar; <tt> \u00c7ift&lt;Tamsay\u0131,Tamsay\u0131&gt;<\/tt> bizim \u00f6rne\u011fimizde.\u00a0 \u00d6nceki giri\u015fte derleyicinin bir sertifikay\u0131 nitelendirmesinin neden makul oldu\u011funu tart\u0131\u015ft\u0131k.<span style=\"color:#000000;\"> <tt> \u00c7ift&lt;Tamsay\u0131,Tamsay\u0131&gt;[]<\/tt> <\/span> yasad\u0131\u015f\u0131 olarak.\u00a0 Temel sorun, derleyici ve \u00e7al\u0131\u015fma zaman\u0131 sisteminin bir dizinin bir dizi olmas\u0131n\u0131 sa\u011flamas\u0131 gerekti\u011fidir. <i> homojen<\/i> ayn\u0131 t\u00fcrden elemanlar\u0131n dizisi.\u00a0 T\u00fcr kontrollerinden biri, yani \u00e7al\u0131\u015fma zaman\u0131nda sanal makine taraf\u0131ndan ger\u00e7ekle\u015ftirilen dizi-depolama-kontrol, rahats\u0131z edici bir yabanc\u0131 \u00f6\u011fenin eklenmesini tespit etmekte ba\u015far\u0131s\u0131z olur. \u00d6rnekte ikinci ekleme <tt> addElements<\/tt> y\u00f6ntem ba\u015far\u0131s\u0131z olmal\u0131, \u00e7\u00fcnk\u00fc bir dizi integral de\u011fere bir \u00e7ift dize ekliyorlard\u0131, ancak beklendi\u011fi gibi ba\u015far\u0131s\u0131z olmuyor. Bunun nedenleri bir \u00f6nceki yaz\u0131da tart\u0131\u015f\u0131lm\u0131\u015ft\u0131.<\/p>\n<p>T\u00fcr\u00fc somut parametreli t\u00fcr olan \u00f6\u011feleri tutan dizileri kullanam\u0131yorsak ge\u00e7ici \u00e7\u00f6z\u00fcm olarak ne kullan\u0131r\u0131z?<\/p>\n<p>Akla gelebilecek 3 ge\u00e7ici \u00e7\u00f6z\u00fcm\u00fc ele alal\u0131m:<\/p>\n<ul>\n<li>ham t\u00fcr dizisi<\/li>\n<li>s\u0131n\u0131rs\u0131z joker karakter parametreli t\u00fcr dizisi<\/li>\n<li>dizi yerine koleksiyon<\/li>\n<\/ul>\n<p>Somut parametreli t\u00fcrlerin dizileri yasa d\u0131\u015f\u0131 olsa da, somut parametreli t\u00fcrlerin toplanmas\u0131na izin verilir.<\/p>\n<p>Joker karakter parametreli t\u00fcr, en az bir t\u00fcr ba\u011f\u0131ms\u0131z de\u011fi\u015fkeninin joker karakter oldu\u011fu genel bir t\u00fcr\u00fcn \u00f6rne\u011fidir.\u00a0 Joker karakterle parametrelendirilmi\u015f t\u00fcrlerin \u00f6rnekleri \u015funlard\u0131r: <tt> Koleksiyon&lt;?&gt;<\/tt> , <tt> Liste&lt;? Number&gt;'yi geni\u015fletiyor<\/tt> , <tt> Kar\u015f\u0131la\u015ft\u0131r\u0131c\u0131&lt;? s\u00fcper String&gt;<\/tt> Ve <tt> \u00c7ift&lt;String,?&gt;<\/tt> . Joker karakterle parametrelendirilmi\u015f t\u00fcr, genel bir t\u00fcr\u00fcn somut \u00f6rneklemelerini i\u00e7eren bir t\u00fcr ailesini belirtir.\u00a0 Kullan\u0131lan joker karakter t\u00fcr\u00fc, hangi somut parametreli t\u00fcrlerin aileye ait oldu\u011funu belirler.\u00a0 \u00d6rne\u011fin, joker karakter parametreli t\u00fcr <tt> Koleksiyon&lt;?&gt;<\/tt> t\u00fcm \u00f6rneklerin ailesini belirtir <tt> Koleksiyon<\/tt> t\u00fcr arg\u00fcman\u0131ndan ba\u011f\u0131ms\u0131z olarak aray\u00fcz.\u00a0 Joker karakter parametreli t\u00fcr <tt> Liste&lt;? Number&gt;'yi geni\u015fletiyor<\/tt> \u00f6\u011fe t\u00fcr\u00fcn\u00fcn bir alt t\u00fcr\u00fc oldu\u011fu t\u00fcm liste t\u00fcrlerinin ailesini belirtir\u00a0 <tt> Say\u0131<\/tt> .\u00a0 Joker karakter parametreli t\u00fcr <tt> Kar\u015f\u0131la\u015ft\u0131r\u0131c\u0131&lt;? s\u00fcper String&gt;<\/tt> t\u00fcm \u00f6rneklerin ailesidir <tt> Kar\u015f\u0131la\u015ft\u0131r\u0131c\u0131<\/tt> s\u00fcper t\u00fcrleri olan t\u00fcr ba\u011f\u0131ms\u0131z de\u011fi\u015fkeni t\u00fcrleri i\u00e7in aray\u00fcz <tt> Sicim.<\/tt><\/p>\n<p><strong><em>Joker karakterle parametrelendirilmi\u015f t\u00fcr, normal anlamda bir t\u00fcr de\u011fildir (parametrele\u015ftirilmemi\u015f s\u0131n\u0131ftan\/arabirimden veya ham t\u00fcrden farkl\u0131).<\/em> <\/strong><\/p>\n<p>Yazmak i\u00e7in joker karakterle parametrelendirilmi\u015f t\u00fcrler kullan\u0131labilir (parametrele\u015ftirilmemi\u015f s\u0131n\u0131flar ve aray\u00fczler gibi):<\/p>\n<ul>\n<li>arg\u00fcman ve d\u00f6n\u00fc\u015f y\u00f6ntemleri olarak<\/li>\n<li>bir alan\u0131n t\u00fcr\u00fc veya yerel referans de\u011fi\u015fkeni olarak<\/li>\n<li>bir dizinin bile\u015fen t\u00fcr\u00fc olarak di\u011fer parametreli t\u00fcrlerin t\u00fcr ba\u011f\u0131ms\u0131z de\u011fi\u015fkeni olarak<\/li>\n<li>yay\u0131nlarda hedef t\u00fcr\u00fc olarak<\/li>\n<\/ul>\n<p>Yaln\u0131zca t\u00fcrler genel olamaz, ayn\u0131 zamanda y\u00f6ntemler de genel olabilir. Statik ve statik olmayan y\u00f6ntemlerin yan\u0131 s\u0131ra yap\u0131c\u0131lar da t\u00fcr parametrelerine sahip olabilir. Resmi t\u00fcr parametrelerinin bildirimine ili\u015fkin s\u00f6zdizimi, genel t\u00fcrlerin s\u00f6zdizimine benzer. T\u00fcr parametresi b\u00f6l\u00fcm\u00fc a\u00e7\u0131l\u0131 ayra\u00e7larla s\u0131n\u0131rland\u0131r\u0131lm\u0131\u015ft\u0131r ve y\u00f6ntemin d\u00f6n\u00fc\u015f t\u00fcr\u00fcnden \u00f6nce g\u00f6r\u00fcn\u00fcr. S\u00f6zdizimi ve anlam\u0131, genel bir t\u00fcr\u00fcn t\u00fcr parametre listesiyle ayn\u0131d\u0131r.<\/p>\n<p>\u0130\u015fte genel bir \u00f6rnek <tt> maksimum<\/tt> Bilinmeyen t\u00fcrden \u00f6\u011felerden olu\u015fan bir koleksiyondaki en b\u00fcy\u00fck de\u011feri hesaplayan y\u00f6ntem <tt> A<\/tt> .<\/p>\n<p>\u00d6rnek (genel bir y\u00f6ntemin):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f Koleksiyonlar {<\/tt><br \/>\n<tt> \u00a0 genel statik <b> <span style=\"color:#000099;\"> &lt;A Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;A&gt;&gt; A'y\u0131 geni\u015fletir<\/span> <\/b> max(Koleksiyon&lt;<b> <span style=\"color:#000099;\"> A<\/span> <\/b> &gt; xs) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 Yineleyici&lt;<b> <span style=\"color:#000099;\"> A<\/span> <\/b> &gt; xi = xs.iterator();<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 <b> <span style=\"color:#000099;\"> A<\/span> <\/b> w = xi.sonraki();<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 while (xi.hasNext()) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 <b> <span style=\"color:#000099;\"> A<\/span> <\/b> x = xi.sonraki();<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 if (w.compareTo(x) &lt; 0) w = x;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 }<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 w'ye d\u00f6n\u00fc\u015f;<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> }\u00a0<\/tt><\/p><\/blockquote>\n<p>Bu <tt> maksimum<\/tt> y\u00f6ntemin ad\u0131nda bir t\u00fcr parametresi vard\u0131r<tt> A<\/tt> .\u00a0 Y\u00f6ntemin \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 koleksiyonun \u00f6\u011fe t\u00fcr\u00fc i\u00e7in yer tutucudur. type parametresinin bir s\u0131n\u0131r\u0131 vard\u0131r; alt t\u00fcr\u00fc olan bir t\u00fcr olmal\u0131d\u0131r <tt> Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;A&gt;<\/tt><\/p>\n<p>\u00d6rnek (ayn\u0131 genel t\u00fcrden, bu sefer <i> ile<\/i> s\u0131n\u0131rlar):<\/p>\n<blockquote><p><tt> genel aray\u00fcz Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;T&gt; {<\/tt><br \/>\n<tt> \u00a0 public int CompareTo(T arg);<\/tt><br \/>\n<tt> }<\/tt><br \/>\n<tt> genel s\u0131n\u0131f TreeMap&lt;Key <b> <span style=\"color:#000066;\"> Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;Key&gt;'yi geni\u015fletir<\/span> <\/b> ,Veri&gt;{<\/tt><br \/>\n<tt> \u00a0 \u00f6zel statik s\u0131n\u0131f Entry&lt;K,V&gt; {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 K tu\u015fu;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 V de\u011feri;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Giri\u015f&lt;K,V&gt; sol = null;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Giri\u015f&lt;K,V&gt; sa\u011f = null;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Giri\u015f&lt;K,V&gt; \u00fcst \u00f6\u011fe;<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \u00f6zel ge\u00e7ici Entry&lt;Key,Data&gt; root = null;<\/tt><br \/>\n<tt> \u00a0 ...<\/tt><br \/>\n<tt> \u00a0 \u00f6zel Entry&lt;Key,Data&gt; getEntry(Anahtar anahtar\u0131) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Giri\u015f&lt;Key,Data&gt; p = k\u00f6k;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Anahtar k = anahtar;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 while (p != null) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int cmp = k.<b> <span style=\"color:#990000;\"> CompareTo(p.key)<\/span> <\/b> ;\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 e\u011fer (cmp == 0)<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 p'yi d\u00f6nd\u00fcr;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else if (cmp &lt; 0)<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 p = p.sol;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ba\u015fka\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 p = p.sa\u011f;\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 }<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 bo\u015f de\u011fer d\u00f6nd\u00fcr;<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 public boolean includeKey(Anahtar anahtar\u0131) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 return getEntry(anahtar) != null;<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 ...<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>Yukar\u0131daki \u00f6rnekte type parametresi <tt> Anahtar<\/tt> s\u0131n\u0131r\u0131 var <tt> Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;Anahtar&gt;<\/tt> .\u00a0 Bir s\u0131n\u0131r\u0131n belirtilmesinin iki etkisi vard\u0131r:<\/p>\n<ul>\n<li><i> S\u0131n\u0131r\u0131n belirtti\u011fi y\u00f6ntemlere eri\u015fim sa\u011flar<\/i> .\u00a0 \u00d6rnekte, s\u0131n\u0131r <tt> Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;Anahtar&gt; <\/tt> eri\u015fim sa\u011flar <tt> kar\u015f\u0131la\u015ft\u0131r<\/tt> uygulamam\u0131zda kullanmak istedi\u011fimiz y\u00f6ntem <tt> A\u011fa\u00e7 Haritas\u0131<\/tt> s\u0131n\u0131f.<\/li>\n<\/ul>\n<ul>\n<li><i> Genel t\u00fcr\u00fcn ba\u015flat\u0131lmas\u0131 i\u00e7in yaln\u0131zca &#8220;s\u0131n\u0131rlar\u0131n i\u00e7indeki&#8221; t\u00fcrler kullan\u0131labilir.<\/i> \u00a0 \u00d6rnekte, a\u015fa\u011f\u0131daki gibi parametreli bir t\u00fcr <tt> A\u011fa\u00e7 Haritas\u0131&lt;Numara,Dize&gt;<\/tt> t\u00fcr\u00fc nedeniyle reddedilecektir. <tt> Say\u0131<\/tt> bir alt t\u00fcr\u00fc de\u011fildir <tt> Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;Numara&gt;<\/tt> .\u00a0 Gibi parametreli bir t\u00fcr <tt> A\u011fa\u00e7 Haritas\u0131&lt;Dize, Dize&gt;<\/tt> kabul edilir, \u00e7\u00fcnk\u00fc String t\u00fcr\u00fc s\u0131n\u0131rlar i\u00e7indedir, yani bir alt t\u00fcrd\u00fcr. <tt> Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;String&gt;<\/tt> .<\/li>\n<\/ul>\n<p>\u0130\u00e7 i\u00e7e ve i\u00e7 t\u00fcrler de dahil olmak \u00fczere t\u00fcm s\u0131n\u0131flar, arabirimler ve numaraland\u0131rma t\u00fcrleri, t\u00fcr parametresi s\u0131n\u0131r\u0131 olarak kullan\u0131labilir.\u00a0 T\u00fcr parametresi s\u0131n\u0131r\u0131 olarak ne ilkel t\u00fcrler ne de dizi t\u00fcrleri kullan\u0131lmaz.<\/p>\n<p>\u00d6rnekler (tip parametresi s\u0131n\u0131rlar\u0131na ili\u015fkin):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f X0 &lt;T geni\u015fliyor <b> <span style=\"color:#000099;\"> int<\/span> <\/b> &gt; { ... }\u00a0\u00a0\u00a0\u00a0\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> s\u0131n\u0131f X1 &lt;T geni\u015fletiliyor <b> <span style=\"color:#000099;\"> Nesne[]<\/span> <\/b> &gt; { ... } <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> s\u0131n\u0131f X2 &lt;T geni\u015fliyor <b> <span style=\"color:#000099;\"> Say\u0131<\/span> <\/b> &gt; { ... }<\/tt><br \/>\n<tt> X3 s\u0131n\u0131f\u0131 &lt;T geni\u015fletiliyor <b> <span style=\"color:#000099;\"> Sicim<\/span> <\/b> &gt; { ... }<\/tt><br \/>\n<tt> X4 s\u0131n\u0131f\u0131 &lt;T geni\u015fletiliyor <b> <span style=\"color:#000099;\"> \u00c7al\u0131\u015ft\u0131r\u0131labilir<\/span> <\/b> &gt; { ... }<\/tt><br \/>\n<tt> s\u0131n\u0131f X5 &lt;T geni\u015fletiliyor <b> <span style=\"color:#000099;\"> Konu.Durum<\/span> <\/b> &gt; { ... }<\/tt><br \/>\n<tt> s\u0131n\u0131f X6 &lt;T geni\u015fletiliyor <b> <span style=\"color:#000099;\"> Liste<\/span> <\/b> &gt; { ... }<\/tt><br \/>\n<tt> s\u0131n\u0131f X7 &lt;T geni\u015fletiliyor <b> <span style=\"color:#000099;\"> List&lt;String&gt;<\/span> <\/b> &gt; { ... }<\/tt><br \/>\n<tt> s\u0131n\u0131f X8 &lt;T geni\u015fletiliyor <b> <span style=\"color:#000099;\"> Liste&lt;? Number&gt;'yi geni\u015fletiyor<\/span> <\/b> &gt; { ... }<\/tt><br \/>\n<tt> s\u0131n\u0131f X9 &lt;T geni\u015fletiliyor <b> <span style=\"color:#000099;\"> Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;? s\u00fcper Numara&gt;<\/span> <\/b> &gt; { ... }<\/tt><br \/>\n<tt> X10&lt;T s\u0131n\u0131f\u0131 geni\u015fletiliyor <b> <span style=\"color:#000099;\"> Harita.Giri\u015f&lt;?,?&gt;<\/span> <\/b> &gt; { ... }<\/tt><\/p><\/blockquote>\n<p>Kod \u00f6rne\u011fi, a\u015fa\u011f\u0131daki gibi ilkel t\u00fcrlerin oldu\u011funu g\u00f6sterir: <tt> int<\/tt> ve dizi t\u00fcrleri gibi <tt> Nesne[] <\/tt> t\u00fcr parametresi s\u0131n\u0131r\u0131 olarak izin verilmez.<\/p>\n<p>S\u0131n\u0131f t\u00fcrleri, \u00f6rne\u011fin <tt> Say\u0131<\/tt> veya <tt> Sicim<\/tt> ve aray\u00fcz t\u00fcrleri gibi <tt> \u00c7al\u0131\u015ft\u0131r\u0131labilir<\/tt> , t\u00fcr parametresi s\u0131n\u0131r\u0131 olarak izin verilir.<\/p>\n<p>Enum t\u00fcrleri, \u00f6rne\u011fin <tt> Konu.Durum<\/tt> t\u00fcr parametresine ba\u011fl\u0131 olarak da izin verilir. <tt> Konu.Durum<\/tt> t\u00fcr parametresi s\u0131n\u0131r\u0131 olarak kullan\u0131lan i\u00e7 i\u00e7e ge\u00e7mi\u015f t\u00fcr\u00fcn bir \u00f6rne\u011fidir.\u00a0 Statik olmayan i\u00e7 tiplere de izin verilir.<\/p>\n<p>Ham t\u00fcrlere, t\u00fcr parametresi s\u0131n\u0131r\u0131 olarak izin verilir; <tt> <span style=\"color:#000000;\"> Liste<\/span> <\/tt> bir \u00f6rnektir.<\/p>\n<p>Parametreli tiplere, a\u015fa\u011f\u0131dakiler gibi somut parametreli tipler de dahil olmak \u00fczere, tip parametresi s\u0131n\u0131r\u0131 olarak izin verilir: <tt> List&lt;String&gt;<\/tt> , s\u0131n\u0131rl\u0131 joker karakter parametreli t\u00fcrler gibi <tt> Liste&lt;? Number&gt;'yi geni\u015fletiyor<\/tt> Ve <tt> Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;? s\u00fcper Uzun&gt;<\/tt> ve s\u0131n\u0131rs\u0131z joker karakter parametreli t\u00fcrler gibi <tt> Harita.Giri\u015f&lt;?,?&gt;<\/tt> .\u00a0 Joker karakterle parametrelendirilmi\u015f bir t\u00fcr olan bir s\u0131n\u0131r, joker karakterin belirtti\u011fi t\u00fcr ailesine ait t\u00fcm t\u00fcrlere t\u00fcr ba\u011f\u0131ms\u0131z de\u011fi\u015fkeni olarak izin verir.\u00a0 Joker karakterle parametrelendirilmi\u015f t\u00fcr s\u0131n\u0131r\u0131, alanlara ve y\u00f6ntemlere yaln\u0131zca s\u0131n\u0131rl\u0131 eri\u015fim sa\u011flar; k\u0131s\u0131tlamalar joker karakterin t\u00fcr\u00fcne ba\u011fl\u0131d\u0131r.<\/p>\n<p>\u00d6rnek (tip parametresi s\u0131n\u0131r\u0131 olarak joker karakterle parametrelendirilmi\u015f t\u00fcr):<\/p>\n<blockquote><p><tt> X&lt; s\u0131n\u0131f\u0131<b> <span style=\"color:#000099;\"> T List&lt;'yi geni\u015fletiyor mu? Number&gt;'yi geni\u015fletiyor<\/span> <\/b> &gt; {<\/tt><br \/>\n<tt> \u00a0 genel void someMethod(T t) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 t.add(yeni Uzun(0L));\u00a0\u00a0\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 Say\u0131 n = t.remove(0);<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> }<\/tt><br \/>\n<tt> s\u0131n\u0131f Testi {<\/tt><br \/>\n<tt> \u00a0 public static void main(String[] args) {<\/tt><br \/>\n<tt> <b> <span style=\"color:#660000;\"> \u00a0\u00a0\u00a0\u00a0 <\/span> <\/b> <span style=\"color:#000000;\"> X&lt;ArrayList&lt;<\/span> <b> <span style=\"color:#000099;\"> Uzun<\/span> <\/b> <span style=\"color:#000000;\"> &gt;&gt; x1 = yeni X&lt;ArrayList&lt;Long&gt;&gt;();\u00a0<\/span> <\/tt><br \/>\n<tt> <span style=\"color:#000000;\"> \u00a0\u00a0\u00a0\u00a0 X&lt;ArrayList&lt;<\/span> <b> <span style=\"color:#000099;\"> Sicim<\/span> <\/b> <span style=\"color:#000000;\"> &gt;&gt; x2 = yeni X&lt;ArrayList&lt;String&gt;&gt;(); <\/span> <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>T\u00fcr\u00fcn referans de\u011fi\u015fkenleri<tt> T <\/tt> (tip parametresi), bir joker karakter t\u00fcr\u00fcn\u00fcn (s\u0131n\u0131rlanan t\u00fcr parametresi) referans de\u011fi\u015fkenleri gibi ele al\u0131n\u0131r.\u00a0 \u00d6rne\u011fimizde sonu\u00e7, derleyicinin type parametresinin temsil etti\u011fi &#8220;bilinmeyen&#8221; t\u00fcrden bir arg\u00fcman alan y\u00f6ntemlerin \u00e7a\u011fr\u0131lmas\u0131n\u0131 reddetmesidir; <tt> Liste.ekle<\/tt> \u00e7\u00fcnk\u00fc s\u0131n\u0131r, \u00fcst s\u0131n\u0131r\u0131 olan joker karakter parametreli bir t\u00fcrd\u00fcr.<br \/>\nAyn\u0131 zamanda ba\u011fl\u0131 <tt> Liste&lt;? Number&gt;'yi geni\u015fletiyor<\/tt> T\u00fcr ba\u011f\u0131ms\u0131z de\u011fi\u015fkenleri olarak kullan\u0131labilecek t\u00fcrleri belirler. Derleyici, t\u00fcr ailesine ait olan t\u00fcm t\u00fcr ba\u011f\u0131ms\u0131z de\u011fi\u015fkenlerini kabul eder. <tt> Liste&lt;? Number&gt;'yi geni\u015fletiyor<\/tt> yani t\u00fcm alt t\u00fcrleri <tt> Liste<\/tt> alt t\u00fcr\u00fc olan bir t\u00fcr arg\u00fcman\u0131yla <tt> Say\u0131<\/tt> .<\/p>\n<p>Bir t\u00fcr parametresi ba\u015fka bir t\u00fcr parametresinin s\u0131n\u0131r\u0131 olarak kullan\u0131labilir.<\/p>\n<p>\u00d6rnek (bir t\u00fcr parametresi s\u0131n\u0131r\u0131 olarak kullan\u0131lan bir t\u00fcr parametresinin):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f \u00dc\u00e7l\u00fc<b> &lt;T&gt;<\/b> {<\/tt><br \/>\n<tt> \u00a0 \u00f6zel T fst, snd, trd;<\/tt><br \/>\n<tt> \u00a0 halka a\u00e7\u0131k &lt;<b> sen<\/b> <b> <span style=\"color:#000099;\"> T'yi uzat\u0131r<\/span> <\/b> , <b> V <span style=\"color:#000099;\"> T'yi uzat\u0131r<\/span> <\/b> , <b> W <span style=\"color:#000099;\"> T'yi uzat\u0131r<\/span> <\/b> &gt; \u00dc\u00e7l\u00fc(U arg1, V arg2, W arg3) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 fst = arg1;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 snd = arg2;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 trd = arg3;<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>Bu \u00f6rnekte type parametresi <tt> T<\/tt> parametreli s\u0131n\u0131f\u0131n t\u00fcr\u00fc parametrelerinin s\u0131n\u0131r\u0131 olarak kullan\u0131l\u0131r <tt> sen<\/tt> ,\u00a0 <tt> V<\/tt> Ve <tt> W<\/tt> o s\u0131n\u0131f\u0131n parametreli \u00f6rnek y\u00f6nteminin.<\/p>\n<p>T\u00fcr parametrelerini di\u011fer t\u00fcr parametrelerinin s\u0131n\u0131rlar\u0131 olarak kullanmaya y\u00f6nelik di\u011fer f\u0131rsatlar aras\u0131nda, i\u00e7 i\u00e7e bir t\u00fcr\u00fcn genel bir t\u00fcr i\u00e7inde tan\u0131mland\u0131\u011f\u0131 veya yerel bir s\u0131n\u0131f\u0131n genel bir y\u00f6ntem i\u00e7inde tan\u0131mland\u0131\u011f\u0131 durumlar yer al\u0131r.\u00a0 Ayn\u0131 tip parametre b\u00f6l\u00fcm\u00fcnde bir tip parametresinin ba\u015fka bir tip parametresine ba\u011fl\u0131 olarak kullan\u0131lmas\u0131na bile izin verilir.<\/p>\n<p>Bir s\u0131n\u0131f olan s\u0131n\u0131r, t\u00fcm ortak \u00fcyelerine, yani ortak alanlara, y\u00f6ntemlere ve i\u00e7 i\u00e7e ge\u00e7mi\u015f t\u00fcrlere eri\u015fim sa\u011flar. S\u0131n\u0131r\u0131n bir alt s\u0131n\u0131f\u0131n\u0131n s\u0131n\u0131rla ayn\u0131 kuruculara sahip oldu\u011funun garantisi olmad\u0131\u011f\u0131ndan yaln\u0131zca yap\u0131c\u0131lara eri\u015filemez.<\/p>\n<p>\u00d6rnek (bir t\u00fcr parametresinin s\u0131n\u0131r\u0131 olarak kullan\u0131lan bir s\u0131n\u0131f\u0131n):<\/p>\n<blockquote><p><tt> kamu s\u0131n\u0131f\u0131 <span style=\"color:#000000;\"> S\u00fcper S\u0131n\u0131f<\/span> {<\/tt><tt> \u00a0\u00a0\u00a0 \/\/ statik \u00fcyeler<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 public enum EnumType {THIS, BU}<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 genel statik Nesne staticField;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 public static void staticMethod() { ... }<\/tt><\/p>\n<p><tt> \u00a0\u00a0\u00a0 \/\/ statik olmayan \u00fcyeler<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 genel s\u0131n\u0131f \u0130\u00e7 S\u0131n\u0131f { ... }<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 public Object nonStaticField;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 public void nonStaticMethod() { ... }<\/tt><\/p>\n<p><tt> \u00a0\u00a0\u00a0 \/\/ yap\u0131c\u0131lar<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 genel S\u00fcper S\u0131n\u0131f() { ... }<\/tt><\/p>\n<p><tt> \u00a0\u00a0\u00a0 \/\/ \u00f6zel \u00fcyeler<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 \u00f6zel Nesne PrivateField;\u00a0<\/tt><\/p>\n<p><tt> \u00a0\u00a0\u00a0 ...<\/tt><br \/>\n<tt> }<\/tt><\/p>\n<p><tt> genel final s\u0131n\u0131f\u0131 SomeClass&lt;T geni\u015fletiliyor <b> <span style=\"color:#006600;\"> S\u00fcper S\u0131n\u0131f<\/span> <\/b> &gt; {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 \u00f6zel T nesnesi;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 public Baz\u0131S\u0131n\u0131flar(T t) { nesne = t; }\u00a0<\/tt><\/p>\n<p><tt> \u00a0\u00a0\u00a0 public String toString() {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 geri d\u00f6nmek<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"statik i\u00e7 i\u00e7e t\u00fcr\u00a0\u00a0\u00a0 : \"+T.EnumType.class+\"\\n\"\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 +\"statik alan\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : \"+T.staticField+\"\\n\"<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 +\"statik y\u00f6ntem\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : \"+T.staticMethod()+\"\\n\"<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 +\"statik olmayan i\u00e7 i\u00e7e t\u00fcr: \"+T.InnerClass.class+\"\\n\"<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 +\"statik olmayan alan\u00a0\u00a0\u00a0\u00a0\u00a0 : \"+object.nonStaticField+\"\\n\"<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 +\"statik olmayan y\u00f6ntem\u00a0\u00a0\u00a0\u00a0 : \"+object.nonStaticMethod()+\"\\n\"<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 +\"yap\u0131c\u0131\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : \"+(yeni T())+\"\\n\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ hata<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 +\"\u00f6zel \u00fcye\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 : \"+object.privateField+\"\\n\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ hata\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>S\u0131n\u0131rl\u0131 <tt> S\u00fcper S\u0131n\u0131f<\/tt> i\u00e7 i\u00e7e ge\u00e7mi\u015f t\u00fcrlerine, statik alanlar\u0131na ve y\u00f6ntemlerine ve statik olmayan alan ve y\u00f6ntemlerine eri\u015fim sa\u011flar.\u00a0 Yaln\u0131zca yap\u0131c\u0131ya eri\u015filemez.\u00a0 Bunun nedeni yap\u0131c\u0131lar\u0131n miras al\u0131nmamas\u0131d\u0131r. Her alt s\u0131n\u0131f kendi kurucular\u0131n\u0131 tan\u0131mlar ve \u00fcst s\u0131n\u0131f\u0131n kurucular\u0131n\u0131 desteklemesi gerekmez.\u00a0 Dolay\u0131s\u0131yla bir alt s\u0131n\u0131f\u0131n olaca\u011f\u0131n\u0131n garantisi yoktur. <tt> S\u00fcper S\u0131n\u0131f<\/tt> \u00fcst s\u0131n\u0131f\u0131yla ayn\u0131 kurucuya sahip olacak.<\/p>\n<p>\u0130\u00e7inde bulundu\u011fu ba\u011flam<tt> Enum&lt;E, Enum&lt;E&gt;&gt;'yi geni\u015fletiyor<\/tt> &#8220;g\u00f6r\u00fcn\u00fc\u015fe g\u00f6re beyan\u0131 <tt> Numaraland\u0131rma<\/tt> paketteki s\u0131n\u0131f <tt> java.lang<\/tt> :<\/p>\n<blockquote><p><tt> genel soyut s\u0131n\u0131f <b> Enum&lt;E, Enum&lt;E&gt;&gt;'yi geni\u015fletiyor<\/b> {<\/tt><br \/>\n<tt> \u00a0 ...<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>T\u00fcr <tt> Numaraland\u0131rma<\/tt> t\u00fcm numaraland\u0131rma t\u00fcrlerinin ortak temel s\u0131n\u0131f\u0131d\u0131r.\u00a0 Java&#8217;da \u015f\u00f6yle bir numaraland\u0131rma t\u00fcr\u00fc <tt> Renk<\/tt> bir s\u0131n\u0131fa \u00e7evrildi <tt> Renk<\/tt> bu uzan\u0131r <tt> Enum&lt;Color&gt;<\/tt> . S\u00fcper s\u0131n\u0131f\u0131n amac\u0131 <tt> Numaraland\u0131rma<\/tt> t\u00fcm numaraland\u0131rma t\u00fcrlerinde ortak olan i\u015flevselli\u011fi sa\u011flamakt\u0131r.<\/p>\n<p>\u0130\u015fte s\u0131n\u0131f\u0131n bir tasla\u011f\u0131 <tt> Numaraland\u0131rma<\/tt> :<\/p>\n<blockquote><p><tt> genel soyut s\u0131n\u0131f <b> Enum&lt;<span style=\"color:#000099;\"> e<\/span> Enum&lt;E&gt;&gt;'yi geni\u015fletir<\/b> Kar\u015f\u0131la\u015ft\u0131r\u0131labilir&lt;'yi uygular<b> <span style=\"color:#000099;\"> e<\/span> <\/b> &gt;, Serile\u015ftirilebilir {<\/tt><br \/>\n<tt> \u00a0 \u00f6zel son Dize ad\u0131;<\/tt><br \/>\n<tt> \u00a0 genel son Dize ad\u0131() { ... }<\/tt><tt> \u00a0 \u00f6zel final int ordinal;<\/tt><br \/>\n<tt> \u00a0 genel final int ordinal() { ... }<\/tt><\/p>\n<p><tt> \u00a0 korumal\u0131 Enum(Dize ad\u0131, int s\u0131ra) { ... }<\/tt><\/p>\n<p><tt> \u00a0 public String\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 toString() { ... }<\/tt><br \/>\n<tt> \u00a0 genel final boole e\u015fittir (Di\u011fer nesne) { ... }<\/tt><br \/>\n<tt> \u00a0 genel final int hashCode() { ... }<\/tt><br \/>\n<tt> \u00a0 korumal\u0131 son Nesne clone(), CloneNotSupportedException'\u0131 atar { ... }<\/tt><br \/>\n<tt> \u00a0 genel final int CompareTo(<b> <span style=\"color:#000099;\"> e<\/span> <\/b> o) { ... }<\/tt><\/p>\n<p><tt> \u00a0 genel final Class&lt;<b> <span style=\"color:#000099;\"> e<\/span> <\/b> &gt; getDeclaringClass() { ... }<\/tt><br \/>\n<tt> \u00a0 public static &lt;T extends Enum&lt;T&gt;&gt; T valueOf(Class&lt;T&gt; enumType, String name) { ... }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>Deklarasyondaki \u015fa\u015f\u0131rt\u0131c\u0131 \u00f6zellik&#8221;<tt> Enum&lt;E, Enum&lt;E&gt;&gt;'yi geni\u015fletiyor<\/tt> &#8220;yeni tan\u0131mlanan s\u0131n\u0131f\u0131n ger\u00e7e\u011fidir <tt> Numaraland\u0131rma<\/tt> ve yeni tan\u0131mlanan t\u00fcr parametresi <tt> e <\/tt> ayn\u0131 t\u00fcr parametrenin s\u0131n\u0131r\u0131nda g\u00f6r\u00fcn\u00fcr.\u00a0 Bu \u015fu anlama gelir: <tt> Numaraland\u0131rma<\/tt> t\u00fcr\u00fcn alt t\u00fcrlerinden biri i\u00e7in ba\u015flat\u0131lmas\u0131 gerekir.\u00a0 Bunun neden anlaml\u0131 oldu\u011funu anlamak i\u00e7in her numaraland\u0131rma t\u00fcr\u00fcn\u00fcn bir alt t\u00fcre \u00e7evrildi\u011fini d\u00fc\u015f\u00fcn\u00fcn. <tt> Numaraland\u0131rma<\/tt> .<\/p>\n<p>\u0130\u015fte yapmac\u0131k enum t\u00fcr\u00fc <tt> Renk<\/tt> :<\/p>\n<blockquote><p><tt> numaraland\u0131rma <b> Renk<\/b> {KIRMIZI, MAV\u0130, YE\u015e\u0130L}<\/tt><\/p><\/blockquote>\n<p>Derleyici bunu a\u015fa\u011f\u0131daki s\u0131n\u0131fa \u00e7evirir:<\/p>\n<blockquote><p><tt> genel final dersi <b> Renk<\/b> uzan\u0131r <b> Enum&lt;Color&gt;<\/b> {<\/tt><br \/>\n<tt> \u00a0 public static final Renk[] de\u011ferler() { return (Renk[])$VALUES.clone(); }<\/tt><br \/>\n<tt> \u00a0 public static Color valueOf(Dize ad\u0131) { ... }<\/tt><tt> \u00a0 \u00f6zel Color(String s, int i) { super(s, i); }<\/tt><\/p>\n<p><tt> \u00a0 genel statik son Renk KIRMIZI;<\/tt><br \/>\n<tt> \u00a0 genel statik son Renk MAV\u0130;<\/tt><br \/>\n<tt> \u00a0 genel statik son Renk YE\u015e\u0130L;<\/tt><\/p>\n<p><tt> \u00a0 \u00f6zel statik son Renk $VALUES[];<\/tt><\/p>\n<p><tt> \u00a0 statik {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 KIRMIZI = yeni Renk(\"KIRMIZI\", 0);<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 MAV\u0130 = yeni Renk(\"MAV\u0130\", 1);<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 YE\u015e\u0130L = new Renk(\"YE\u015e\u0130L\", 2);<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 $DE\u011eERLER = (yeni Renk[] { KIRMIZI, MAV\u0130, YE\u015e\u0130L });<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>Miras\u0131n etkisi vard\u0131r <tt> Renk<\/tt> type, uygulanan t\u00fcm y\u00f6ntemleri miras al\u0131r <tt> Enum&lt;Color&gt;<\/tt> .\u00a0 Bunlar aras\u0131nda <tt> kar\u015f\u0131la\u015ft\u0131r<\/tt> Y\u00f6ntem.\u00a0 <tt> Renk. kar\u015f\u0131la\u015ft\u0131r<\/tt> y\u00f6ntem muhtemelen bir almal\u0131 <tt> Renk<\/tt> bir arg\u00fcman olarak.\u00a0 Bunu ger\u00e7ekle\u015ftirmek i\u00e7in s\u0131n\u0131f <tt> Numaraland\u0131rma<\/tt> geneldir ve <tt> Enum.compareTo<\/tt> y\u00f6ntem al\u0131r <tt> Numaraland\u0131rma<\/tt> &#8216;in t\u00fcr parametresi <tt> e <\/tt> bir arg\u00fcman olarak.\u00a0 Sonu\u00e7 olarak yaz\u0131n <tt> Renk<\/tt> t\u00fcretilmi\u015f <tt> Enum&lt;Color&gt;<\/tt> miras al\u0131r <tt> kar\u015f\u0131la\u015ft\u0131r<\/tt> alan bir y\u00f6ntem <tt> Renk<\/tt> ve arg\u00fcman, tam olarak olmas\u0131 gerekti\u011fi gibi.<br \/>\nBildiriyi incelersek &#8220;<tt> Enum&lt;E, Enum&lt;E&gt;&gt;'yi geni\u015fletiyor<\/tt> &#8220;Bu modelin \u00e7e\u015fitli y\u00f6nleri oldu\u011funu g\u00f6rebiliriz.<\/p>\n<p>Birincisi, s\u0131n\u0131rlanan t\u00fcr parametresinin t\u00fcr\u00fcn kendisi oldu\u011fu ger\u00e7e\u011fi var: &#8220;<tt> <b> Numaraland\u0131rma<\/b> &lt;E geni\u015fliyor <b> Numaraland\u0131rma<\/b> &lt;E&gt;&gt;<\/tt> &#8220;. T\u00fcr\u00fcn yaln\u0131zca alt t\u00fcrlerinin olmas\u0131n\u0131 sa\u011flar <tt> Numaraland\u0131rma<\/tt> t\u00fcr ba\u011f\u0131ms\u0131z de\u011fi\u015fkenleri olarak izin verilir. (Teorik olarak yaz\u0131n <tt> Numaraland\u0131rma<\/tt> oldu\u011fu gibi kendi kendine \u00f6rneklenebilir <tt> Enum&lt;Enum&gt;<\/tt> ancak bu kesinlikle ama\u00e7lanmam\u0131\u015ft\u0131r ve b\u00f6yle bir \u00f6rneklemenin yararl\u0131 olabilece\u011fi bir durumu hayal etmek zordur.)<\/p>\n<p>\u0130kincisi, parametreye ba\u011fl\u0131 t\u00fcr\u00fcn parametreli t\u00fcr oldu\u011fu ger\u00e7e\u011fi vard\u0131r. <tt> Numaraland\u0131rma<b> &lt;E&gt;<\/b> <\/tt> type parametresini kullanan <tt> e<\/tt> s\u0131n\u0131r\u0131n t\u00fcr arg\u00fcman\u0131 olarak. Bu bildirim, bir alt t\u00fcr ile bir \u00f6rnek olu\u015fturma aras\u0131ndaki kal\u0131t\u0131m ili\u015fkisinin garanti alt\u0131na al\u0131nmas\u0131n\u0131 sa\u011flar. <tt> Numaraland\u0131rma<\/tt> formdad\u0131r<tt> X, Enum&lt;X&gt;'yi geni\u015fletir<\/tt> &#8220;. Gibi bir alt t\u00fcr &#8220;<tt> X, Enum&lt;Y&gt;'yi geni\u015fletir<\/tt> &#8221; type arg\u00fcman\u0131 nedeniyle bildirilemiyor <tt> e<\/tt> s\u0131n\u0131rlar i\u00e7inde olmayacak; yaln\u0131zca alt t\u00fcrleri <tt> Enum&lt;X&gt;<\/tt> s\u0131n\u0131rlar i\u00e7erisindedir.<\/p>\n<p>\u00dc\u00e7\u00fcnc\u00fcs\u00fc \u015fu ger\u00e7ek var <tt> Numaraland\u0131rma<\/tt> \u00f6ncelikle geneldir.\u00a0 Bu, baz\u0131 s\u0131n\u0131f y\u00f6ntemlerinin oldu\u011fu anlam\u0131na gelir. <tt> Numaraland\u0131rma<\/tt> bir arg\u00fcman al\u0131n veya bilinmeyen t\u00fcrde bir de\u011fer d\u00f6nd\u00fcr\u00fcn (ya da bilinmeyen bir t\u00fcre ba\u011fl\u0131). Zaten bildi\u011fimiz gibi bu bilinmeyen t\u00fcr daha sonra bir alt t\u00fcr olacak <tt> X<\/tt> ile ilgili <tt> Enum&lt;X&gt;<\/tt> .\u00a0 Bu nedenle, parametreli tipte <tt> Enum&lt;X&gt;<\/tt> , bu y\u00f6ntemler alt t\u00fcr\u00fc i\u00e7erir <tt> X<\/tt> ve alt t\u00fcre miras al\u0131n\u0131rlar <tt> X<\/tt> .\u00a0 <tt> kar\u015f\u0131la\u015ft\u0131r<\/tt> y\u00f6ntem b\u00f6yle bir y\u00f6ntemin \u00f6rne\u011fidir; \u00fcst s\u0131n\u0131ftan her alt s\u0131n\u0131fa miras al\u0131n\u0131r ve her durumda alt s\u0131n\u0131fa \u00f6zg\u00fc bir imzaya sahiptir.<\/p>\n<p>\u00d6zetlemek gerekirse, deklarasyon &#8220;<tt> Enum&lt;E, Enum&lt;E&gt;&gt;'yi geni\u015fletiyor<\/tt> &#8220;\u015fu \u015fekilde \u00e7\u00f6z\u00fclebilir: <tt> Numaraland\u0131rma<\/tt> yaln\u0131zca alt t\u00fcrleri i\u00e7in \u00f6rneklenebilen genel bir t\u00fcrd\u00fcr ve bu alt t\u00fcrler, baz\u0131lar\u0131 alt t\u00fcre \u00f6zg\u00fc arg\u00fcmanlar alan (veya ba\u015fka \u015fekilde alt t\u00fcre ba\u011fl\u0131 olan) baz\u0131 yararl\u0131 y\u00f6ntemleri miras al\u0131r.<\/p>\n<p><b>S\u0131n\u0131flar\u0131n Alt S\u0131n\u0131r Tipi Parametreleri<\/b><\/p>\n<p>T\u00fcr parametrelerinin a\u015fa\u011f\u0131daki gibi birka\u00e7 s\u0131n\u0131r\u0131 olabilir: <tt> Box&lt;T s\u0131n\u0131f\u0131 Number&gt;'yi geni\u015fletir {...}<\/tt> . Ancak bir t\u00fcr parametresinin alt s\u0131n\u0131r\u0131 olamaz, yani \u015f\u00f6yle bir yap\u0131 olamaz: <tt> s\u0131n\u0131f Box&lt;T <b> Harika<\/b> Say\u0131&gt; {...}<\/tt> izin verilmez.\u00a0 Neden?\u00a0 Cevap \u015fu: anlams\u0131z \u00e7\u00fcnk\u00fc izin verilmi\u015f olsayd\u0131 size hi\u00e7bir \u015fey sat\u0131n almazd\u0131.\u00a0 Bir t\u00fcr parametresindeki \u00fcst s\u0131n\u0131r\u0131n ne anlama geldi\u011fini ke\u015ffederek s\u0131n\u0131flar\u0131n alt s\u0131n\u0131r t\u00fcr parametrelerinin neden kafa kar\u0131\u015ft\u0131r\u0131c\u0131 oldu\u011funu g\u00f6relim.<\/p>\n<p>Bir t\u00fcr parametresindeki \u00fcst s\u0131n\u0131r\u0131n \u00fc\u00e7 etkisi vard\u0131r:<\/p>\n<ol>\n<ol>\n<li><b> <i> K\u0131s\u0131tl\u0131 \u00d6rnekleme.<\/i> <\/b> \u00dcst s\u0131n\u0131r, genel t\u00fcr\u00fcn ba\u015flat\u0131lmas\u0131 i\u00e7in kullan\u0131labilecek t\u00fcr k\u00fcmesini k\u0131s\u0131tlar.\u00a0 E\u011fer bir ilan edersek <tt> Box&lt;T s\u0131n\u0131f\u0131 Number&gt;'yi geni\u015fletir {...} <\/tt> o zaman derleyici yaln\u0131zca alt t\u00fcrlerin olmas\u0131n\u0131 sa\u011flar <tt> Say\u0131<\/tt> t\u00fcr arg\u00fcman\u0131 olarak kullan\u0131labilir.\u00a0 Yani, bir <tt> Kutu&lt;Numara&gt;<\/tt> veya bir <tt> Kutu&lt;Uzun&gt;<\/tt> izin verilir, ancak bir <tt> Kutu&lt;Nesne&gt;<\/tt> veya <tt> Kutu&lt;String&gt;<\/tt> reddedilecekti<\/li>\n<\/ol>\n<\/ol>\n<p>\u00d6rnek (bir t\u00fcr parametresindeki \u00fcst s\u0131n\u0131r nedeniyle k\u0131s\u0131tl\u0131 \u00f6rnekleme):<br \/>\n<tt> Box&lt;T s\u0131n\u0131f\u0131 Number&gt;'yi geni\u015fletir {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6zel T de\u011feri;\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 genel Kutu(T t) { de\u011fer = t; }\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 ...<\/tt><br \/>\n<tt> }\u00a0<\/tt><tt> s\u0131n\u0131f Testi {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 public static void main(String[] args) {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Box&lt;Long&gt; boxOfLong = yeni Box&lt;Long&gt;(0L);\u00a0\u00a0 <b> \/\/ iyi<\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Box&lt;String&gt; boxOfString = new Box&lt;String&gt;(\"\"); <b> <span style=\"color:#330000;\"> \/\/ hata: String s\u0131n\u0131rlar dahilinde de\u011fil<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p>\n<ol>\n<li><b> <i> Statik Olmayan \u00dcyelere Eri\u015fim. <\/i> <\/b> \u00dcst s\u0131n\u0131r, \u00fcst s\u0131n\u0131r\u0131n t\u00fcm genel statik olmayan y\u00f6ntemlerine ve alanlar\u0131na eri\u015fim sa\u011flar.\u00a0 Uygulamam\u0131z\u0131n uygulanmas\u0131nda <tt> Box&lt;T s\u0131n\u0131f\u0131 Number&gt;'yi geni\u015fletir {...}<\/tt> s\u0131n\u0131fta tan\u0131mlanan t\u00fcm genel statik olmayan y\u00f6ntemleri \u00e7a\u011f\u0131rabiliriz <tt> Say\u0131<\/tt> , \u00f6rne\u011fin <tt> intValue()<\/tt> \u00f6rne\u011fin.\u00a0 \u00dcst s\u0131n\u0131r olmadan derleyici b\u00f6yle bir \u00e7a\u011fr\u0131y\u0131 reddeder. \u00d6rnek (bir t\u00fcr parametresindeki \u00fcst s\u0131n\u0131r nedeniyle statik olmayan \u00fcyelere eri\u015fim):<\/li>\n<\/ol>\n<p><tt> Box&lt;T s\u0131n\u0131f\u0131 Number&gt;'yi geni\u015fletir {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6zel T de\u011feri;\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 genel Kutu(T t) { de\u011fer = t; }\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 public int art\u0131r\u0131m() { return value.intValue()+1; } <b> \/\/ &lt;= Say\u0131 s\u0131n\u0131r\u0131 olmadan bir hata olur<\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0 ...<\/tt><br \/>\n<tt> }\u00a0<\/tt><\/p>\n<ol>\n<ol>\n<li><b> <i> Silme yaz\u0131n. <\/i> <\/b> En soldaki \u00fcst s\u0131n\u0131r, t\u00fcr\u00fcn silinmesi i\u00e7in kullan\u0131l\u0131r ve bayt kodundaki type parametresinin yerine ge\u00e7er.\u00a0 bizim <tt> Box&lt;T s\u0131n\u0131f\u0131 Number&gt;'yi geni\u015fletir {...}<\/tt> t\u00fcm olu\u015fumlar\u0131 <tt> T<\/tt> \u00fcst s\u0131n\u0131rla de\u011fi\u015ftirilecek <tt> Say\u0131<\/tt> .\u00a0 \u00d6rne\u011fin, e\u011fer s\u0131n\u0131f <tt> Kutu<\/tt> \u00f6zel bir t\u00fcr alan\u0131na sahiptir <tt> T<\/tt> ve bir y\u00f6ntem <tt> ge\u00e7ersiz k\u00fcme (T i\u00e7eri\u011fi) <\/tt> bu \u00f6zel alan\u0131 ayarlamak i\u00e7in alan \u015fu t\u00fcrden olacakt\u0131r: <tt> Say\u0131<\/tt> tip silindikten sonra y\u00f6ntem bir y\u00f6nteme \u00e7evrilecektir <tt> ge\u00e7ersiz k\u00fcme (Say\u0131 i\u00e7eri\u011fi)<\/tt> .<\/li>\n<\/ol>\n<\/ol>\n<p>\u00d6rnek (t\u00fcr silme i\u015fleminde bir t\u00fcr parametresinde \u00fcst s\u0131n\u0131r\u0131n kullan\u0131lmas\u0131 &#8211; <i> \u00f6nce<\/i> tip silme):<br \/>\n<tt> s\u0131n\u0131f Box&lt;<b> T Say\u0131y\u0131 geni\u015fletir<\/b> &gt; {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6zel <b> T<\/b> de\u011fer;\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 genel kutu(<b> T<\/b> t) { de\u011fer = t; }\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 ...<\/tt><br \/>\n<tt> }\u00a0<\/tt><\/p>\n<ol>\n<ol>\u00d6rnek (t\u00fcr silme i\u015fleminde bir t\u00fcr parametresinde \u00fcst s\u0131n\u0131r\u0131n kullan\u0131lmas\u0131 &#8211;<\/ol>\n<\/ol>\n<p><i> sonras\u0131nda<\/i><\/p>\n<ol>\n<ol>tip silme):<\/ol>\n<\/ol>\n<p>&nbsp;<\/p>\n<p><tt> s\u0131n\u0131f Kutu {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6zel <b> Say\u0131<\/b> de\u011fer;\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 genel kutu(<b> Say\u0131<\/b> t) { de\u011fer = t; }\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 ...<\/tt><br \/>\n<tt> }<\/tt><\/p>\n<ol>Ek olarak, en soldaki \u00fcst s\u0131n\u0131r, otomatik olarak eklenen d\u00f6n\u00fc\u015f\u00fcmler ve k\u00f6pr\u00fc y\u00f6ntemleri gibi ba\u015fka konumlarda da g\u00f6r\u00fcn\u00fcr.<\/ol>\n<p>Tip parametrelerinde alt s\u0131n\u0131rlara izin verilseydi, bunlar\u0131n hangi yan etkileri olurdu veya olmas\u0131 gerekirdi? E\u011fer b\u00f6yle bir yap\u0131 varsa <tt> s\u0131n\u0131f Box&lt;T <b> Harika<\/b> Say\u0131&gt; {...} <\/tt> izin verildiyse bu ne anlama gelir?\u00a0 \u00dcst tip parametre s\u0131n\u0131r\u0131n\u0131n &#8211; k\u0131s\u0131tl\u0131 \u00f6rnekleme, statik olmayan \u00fcyeye eri\u015fim, t\u00fcr silme &#8211; 3 yan etkisi bir alt s\u0131n\u0131r i\u00e7in ne anlama gelir?<\/p>\n<p><i> K\u0131s\u0131tlanm\u0131\u015f \u00d6rnekler. <\/i> Derleyici, genel t\u00fcr\u00fcn ba\u015flat\u0131lmas\u0131 i\u00e7in kullan\u0131labilecek t\u00fcr k\u00fcmesini bir alt s\u0131n\u0131r t\u00fcr parametresiyle k\u0131s\u0131tlayabilir.\u00a0 \u00d6rne\u011fin, derleyici a\u015fa\u011f\u0131daki gibi \u00f6rneklemelere izin verebilir: <tt> Kutu&lt;Numara&gt;<\/tt> Ve <tt> Kutu&lt;Nesne&gt;<\/tt> birinden <tt> Kutu&lt;T <b> Harika<\/b> Numara&gt; <\/tt> ve gibi \u00f6rneklemeleri reddedin <tt> Kutu&lt;Uzun&gt;<\/tt> veya <tt> Kutu&lt;K\u0131sa&gt;<\/tt> .\u00a0 Bu, \u00fcst tip parametre s\u0131n\u0131rlar\u0131 i\u00e7in a\u00e7\u0131klanan k\u0131s\u0131tlay\u0131c\u0131 yan etki do\u011frultusunda bir etki olacakt\u0131r.<\/p>\n<p><i> Statik Olmayan \u00dcyelere Eri\u015fim. <\/i> Daha d\u00fc\u015f\u00fck t\u00fcrde bir parametre s\u0131n\u0131r\u0131, s\u0131n\u0131ftan miras al\u0131nanlar\u0131n \u00f6tesinde herhangi bir belirli y\u00f6nteme eri\u015fim sa\u011flamaz <tt> Nesne<\/tt> . \u00d6rne\u011finde <tt> Kutu&lt;T <b> Harika<\/b> Numara&gt; <\/tt> s\u00fcper t\u00fcrleri <tt> Say\u0131<\/tt> Referans t\u00fcrleri ve dolay\u0131s\u0131yla alt t\u00fcrleri olmalar\u0131 d\u0131\u015f\u0131nda ortak hi\u00e7bir yan\u0131 yoktur. <tt> Nesne<\/tt> .\u00a0 Derleyici, t\u00fcr alan\u0131n\u0131n oldu\u011funu varsayamaz. <tt> T<\/tt> t\u00fcrden <tt> Say\u0131<\/tt> veya bunun bir alt t\u00fcr\u00fc.\u00a0 Bunun yerine, yaz\u0131 alan\u0131 <tt> T<\/tt> herhangi bir s\u00fcper tipte olabilir <tt> Say\u0131<\/tt> , \u00f6rne\u011fin <tt> Serile\u015ftirilebilir<\/tt> veya <tt> Nesne<\/tt> .\u00a0 Gibi bir y\u00f6ntemin \u00e7a\u011fr\u0131lmas\u0131 <tt> intValue()<\/tt> art\u0131k t\u00fcr a\u00e7\u0131s\u0131ndan g\u00fcvenli de\u011fil ve derleyicinin bunu reddetmesi gerekecek. Sonu\u00e7 olarak, alt t\u00fcr parametre s\u0131n\u0131r\u0131, s\u0131n\u0131fta tan\u0131mlananlar\u0131n \u00f6tesinde statik olmayan \u00fcyelere eri\u015fim vermez. <tt> Nesne<\/tt> ve dolay\u0131s\u0131yla &#8220;s\u0131n\u0131r yok&#8221; ile ayn\u0131 etkiye sahiptir.<\/p>\n<p><i> T\u00fcr\u00fc Silme<\/i> .\u00a0 Bu mant\u0131k \u00e7izgisini takip ederek, type parametresinin olu\u015fumlar\u0131n\u0131 en soldaki alt s\u0131n\u0131rla de\u011fi\u015ftirmek mant\u0131kl\u0131 de\u011fildir.\u00a0 Yap\u0131c\u0131 gibi bir y\u00f6ntem bildirmek <tt> Kutu(<b> T<\/b> T) <\/tt> yap\u0131c\u0131 olarak <tt> Kutu(<b> Say\u0131<\/b> T)<\/tt> bunu g\u00f6z \u00f6n\u00fcnde bulundurursak mant\u0131kl\u0131 de\u011fil <tt> T<\/tt> bir s\u00fcper tip ile de\u011fi\u015ftirilir <tt> Say\u0131<\/tt> .\u00a0 Bir <tt> Nesne<\/tt> bir \u00f6rnekte yap\u0131c\u0131ya do\u011fru bir \u015fekilde aktar\u0131labilir <tt> Kutu&lt;Nesne&gt;<\/tt> ve yap\u0131c\u0131 bunu reddeder.\u00a0 Bu tamamen yanl\u0131\u015f olurdu.\u00a0\u00a0 Dolay\u0131s\u0131yla, t\u00fcr silme, t\u00fcr de\u011fi\u015fkeninin t\u00fcm olu\u015fumlar\u0131n\u0131n yerini alacakt\u0131r<tt> T<\/tt> t\u00fcre g\u00f6re <tt> Nesne<\/tt> ve alt s\u0131n\u0131r\u0131na g\u00f6re de\u011fil.\u00a0 Yine alt s\u0131n\u0131r &#8220;s\u0131n\u0131r yok&#8221; ile ayn\u0131 etkiye sahip olacakt\u0131r.<\/p>\n<p>Her ikisi de daha d\u00fc\u015f\u00fck olursa bunun ne anlama gelece\u011fini \u00f6\u011frenmek ister misiniz? <i> _Ve_<\/i> \u00fcst s\u0131n\u0131rlara izin verildi mi?\u00a0\u00a0 \u015eahsen ben bunu d\u00fc\u015f\u00fcnmek bile istemiyorum ve izin verirseniz &#8220;y\u00f6netilemez&#8221; kategorisine kaydetmeyi tercih ederim.<\/p>\n<p>Sonu\u00e7 olarak: t\u00fcm bunlar bir &#8220;<tt> Harika<\/tt> &#8221; seni sat\u0131n almak i\u00e7in ba\u011fl\u0131 olmak yaln\u0131zca s\u00fcper tiplerin ge\u00e7erli oldu\u011fu bir k\u0131s\u0131tlamad\u0131r <tt> Say\u0131<\/tt> t\u00fcr arg\u00fcmanlar\u0131 olarak kullan\u0131labilir.\u00a0 Ve bu bile s\u0131kl\u0131kla yanl\u0131\u015f anla\u015f\u0131l\u0131yor.\u00a0 Bu \u015fu anlama gelmez <tt> s\u0131n\u0131f Box&lt;T s\u00fcper Say\u0131&gt; {...}<\/tt> yaln\u0131zca s\u00fcper tiplerin \u00f6rneklerini i\u00e7erir <tt> Say\u0131<\/tt> .\u00a0 Tam tersi; a\u015fa\u011f\u0131daki \u00f6rnekte de g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi!<\/p>\n<p>\u00d6rnek (t\u00fcr silme i\u015fleminde bir t\u00fcr parametresinde \u00fcst s\u0131n\u0131r\u0131n kullan\u0131lmas\u0131 &#8211; <i> \u00f6nce<\/i> tip silme):<\/p>\n<div style=\"margin-left:40px;\">\n<blockquote><p><tt> s\u0131n\u0131f Box&lt;<b> T s\u00fcper numaras\u0131<\/b> &gt; {<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6zel <b> T<\/b> de\u011fer;<\/tt><br \/>\n<tt> \u00a0\u00a0 genel kutu(<b> T<\/b> t) { de\u011fer = t; }<\/tt><br \/>\n<tt> \u00a0\u00a0 ...<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<\/div>\n<p>\u00d6rnek (t\u00fcr silme i\u015fleminde bir t\u00fcr parametresinde \u00fcst s\u0131n\u0131r\u0131n kullan\u0131lmas\u0131 &#8211; <i> sonras\u0131nda<\/i> tip silme):<\/p>\n<div style=\"margin-left:40px;\">\n<blockquote><p><tt> s\u0131n\u0131f Kutu {<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6zel <b> Nesne<\/b> de\u011fer;<\/tt><br \/>\n<tt> \u00a0\u00a0 genel kutu(<b> Nesne<\/b> t) { de\u011fer = t; }<\/tt><br \/>\n<tt> \u00a0\u00a0 ...<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<\/div>\n<p>A <tt> s\u0131n\u0131f Box&lt;T <b> Harika<\/b> Say\u0131&gt; {...} <\/tt> t\u00fcr silme i\u015flemine g\u00f6re bir dile \u00e7evrilecektir <tt> Kutu<\/tt> i\u00e7eren <tt> Nesne<\/tt> alan\u0131 ve yap\u0131c\u0131s\u0131 \u015furaya \u00e7evrilecektir: <tt> Kutu(Nesne t)<\/tt> . Bu temelde farkl\u0131 bir <tt> s\u0131n\u0131f Box&lt;T <b> uzan\u0131r<\/b> Say\u0131&gt; {...}<\/tt> , \u015fu dile \u00e7evrilecek: <tt> Kutu<\/tt> i\u00e7eren <tt> Say\u0131<\/tt> alan\u0131 ve yap\u0131c\u0131s\u0131 \u015furaya \u00e7evrilecektir: <tt> Kutu(Say\u0131 t)<\/tt> . Sonu\u00e7 olarak, bir <tt> Kutu&lt;Numara&gt;<\/tt> bir \u00f6rnekten ba\u015flat\u0131ld\u0131<tt> Box&lt;T s\u0131n\u0131f\u0131 Number&gt;'yi geni\u015fletir {...}<\/tt> birinden farkl\u0131 olurdu <tt> Kutu&lt;Numara&gt;<\/tt> bir \u00f6rnekten \u00f6rnekleme <tt> s\u0131n\u0131f Box&lt;T s\u00fcper Say\u0131&gt; {...}<\/tt> kar\u0131\u015f\u0131kl\u0131\u011fa yol a\u00e7mas\u0131 muhtemeldir.\u00a0 Bu nedenle s\u0131n\u0131flar\u0131n tip parametrelerinde alt s\u0131n\u0131rlar\u0131n bir anlam\u0131 yoktur.<\/p>\n<p>&nbsp;<\/p>\n<hr width=\"100%\" \/>\n<p>&nbsp;<\/p>\n<p><b>Y\u00f6ntemlerin Alt S\u0131n\u0131r T\u00fcr\u00fc Parametreleri<\/b><\/p>\n<p>Y\u00f6ntemler ve bunlar\u0131n ba\u011f\u0131ms\u0131z de\u011fi\u015fken t\u00fcrleri ile birlikte, alt s\u0131n\u0131ra sahip bir t\u00fcr parametresi bazen yararl\u0131 olabilir.<\/p>\n<p>\u00d6rnek (alt s\u0131n\u0131ra sahip bir t\u00fcr parametresinden yararlanacak bir y\u00f6ntemin):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f \u00c7ift&lt;X,Y&gt; {<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6nce \u00f6zel X;<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6zel Y saniye;<\/tt><br \/>\n<tt> \u00a0\u00a0 ...<\/tt><br \/>\n<tt> \u00a0\u00a0 halka a\u00e7\u0131k &lt;<b> S\u00fcper bir X<\/b> ,<b> B s\u00fcper Y<\/b> &gt; B addToMap(Map&lt;A,B&gt; haritas\u0131) { \/\/ hata: t\u00fcr parametresinin alt s\u0131n\u0131r\u0131 olamaz<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 return map.put(birinci, ikinci);<\/tt><br \/>\n<tt> \u00a0\u00a0 }<\/tt><br \/>\n<tt> }<\/tt><br \/>\n<tt> s\u0131n\u0131f Testi {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 public static void main(String[] args) {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Pair&lt;String,Long&gt; \u00e7ifti = yeni Pair&lt;&gt;(\"ABC\",42L);<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Map&lt;CharSequence, Number&gt; haritas\u0131 = HashMap&lt;CharSequence, Number&gt;();<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Say\u0131 numaras\u0131 = \u00e7ift.addToMap(harita);<\/tt><br \/>\n<tt> \u00a0\u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>Bu <tt> addToMap()<\/tt> y\u00f6ntemi \u00e7iftin i\u00e7eri\u011fini bir haritaya ekler.\u00a0 S\u00fcper t\u00fcrlerini tutabilen herhangi bir harita <tt> X<\/tt> Ve <tt> e<\/tt> yapard\u0131.\u00a0 Haritan\u0131n <tt> koymak()<\/tt> y\u00f6ntem, haritada anahtar i\u00e7in zaten bir anahtar\/de\u011fer giri\u015fi varsa, verilen anahtar i\u00e7in haritada bulunan de\u011feri d\u00f6nd\u00fcr\u00fcr.\u00a0 Haritan\u0131n d\u00f6n\u00fc\u015f de\u011feri <tt> koymak()<\/tt> y\u00f6ntem iade edilecektir. <tt> addToMap()<\/tt> Y\u00f6ntem.\u00a0 Bu ko\u015fullar alt\u0131nda, yukar\u0131da g\u00f6sterilen y\u00f6ntemi bildirmek isteriz: Harita, \u00e7iftin t\u00fcr parametrelerinin \u00fcst t\u00fcrleriyle parametrelendirilir ve <tt> addToMap()<\/tt> y\u00f6ntemin d\u00f6n\u00fc\u015f t\u00fcr\u00fc haritan\u0131n de\u011fer t\u00fcr\u00fcd\u00fcr.<\/p>\n<p>Derleyici t\u00fcr parametrelerinde alt s\u0131n\u0131rlara izin vermedi\u011finden, ge\u00e7ici bir \u00e7\u00f6z\u00fcme ihtiyac\u0131m\u0131z var.<\/p>\n<p>Akla gelen ge\u00e7ici \u00e7\u00f6z\u00fcmlerden biri joker karakter kullanmakt\u0131r \u00e7\u00fcnk\u00fc joker karakterlerin bir alt s\u0131n\u0131r\u0131 olabilir.\u00a0 Burada joker karakter kullanarak bir ge\u00e7ici \u00e7\u00f6z\u00fcm bulabilirsiniz.<\/p>\n<p>\u00d6rnek (joker karakterler kullanan \u00f6nceki \u00f6rnek i\u00e7in ge\u00e7ici \u00e7\u00f6z\u00fcm):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f \u00c7ift&lt;X,Y&gt; {<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6nce \u00f6zel X;<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6zel Y saniye;<\/tt><br \/>\n<tt> \u00a0\u00a0 ...<\/tt><br \/>\n<tt> \u00a0\u00a0 halk <b> Nesne<\/b> addToMap(Map&lt;<b> ? S\u00fcper X<\/b> , <b> ? s\u00fcper Y<\/b> &gt; haritas\u0131) {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 return map.put(birinci, ikinci);<\/tt><br \/>\n<tt> \u00a0\u00a0 }<\/tt><br \/>\n<tt> }<\/tt><br \/>\n<tt> s\u0131n\u0131f Testi {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 public static void main(String[] args) {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Pair&lt;String,Long&gt; \u00e7ifti = yeni Pair&lt;&gt;(\"ABC\",42L);<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Map&lt;CharSequence, Number&gt; haritas\u0131 = HashMap&lt;CharSequence, Number&gt;();<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Numara numaras\u0131 = <b> (Say\u0131)<\/b> \u00e7ift.addToMap(harita);<\/tt><br \/>\n<tt> \u00a0\u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>D\u00f6n\u00fc\u015f t\u00fcr\u00fcn\u00fc istendi\u011fi gibi bildirmenin bir yolu olmamas\u0131 d\u0131\u015f\u0131nda i\u015fe yarar.\u00a0 S\u00fcper tipi olurdu <tt> e<\/tt> derleyicinin harita t\u00fcr\u00fcnden yakalad\u0131\u011f\u0131, ancak bunu belirtmek i\u00e7in bir s\u00f6zdizimi yoktur.\u00a0 D\u00f6n\u00fc\u015f t\u00fcr\u00fcn\u00fc a olarak bildirmemeliyiz &#8220;<tt> ? s\u00fcper Y<\/tt> &#8220;, \u00c7\u00fcnk\u00fc &#8220;<tt> ? s\u00fcper Y<\/tt> &#8221; bir joker karakterdir ve bir t\u00fcr de\u011fildir ve bu nedenle d\u00f6n\u00fc\u015f t\u00fcr\u00fc olarak kullan\u0131lmas\u0131na izin verilmez. Ba\u015fka se\u00e7ene\u011fimiz yok ve \u015funu kullanmal\u0131y\u0131z: <tt> Nesne<\/tt> bunun yerine y\u00f6ntemimizin d\u00f6n\u00fc\u015f t\u00fcr\u00fc olarak.\u00a0 Bu olduk\u00e7a spesifik olmayan d\u00f6n\u00fc\u015f t\u00fcr\u00fc, arayanlar\u0131 zorlar. <tt> addToMap()<\/tt> d\u00f6n\u00fc\u015f de\u011ferini a\u015fa\u011f\u0131ya \u00e7evirme y\u00f6ntemi <tt> Nesne<\/tt> ger\u00e7ek t\u00fcr\u00fcne.\u00a0 Akl\u0131m\u0131zdaki tam olarak bu de\u011fildi.<\/p>\n<p>Ba\u015fka bir ge\u00e7ici \u00e7\u00f6z\u00fcm statik y\u00f6ntemlerin kullan\u0131lmas\u0131d\u0131r.\u00a0 Statik olmayan bir y\u00f6ntem yerine statik olan bir ge\u00e7ici \u00e7\u00f6z\u00fcm\u00fc burada bulabilirsiniz.<\/p>\n<p>\u00d6rnek (statik bir y\u00f6ntem kullanan \u00f6nceki \u00f6rnek i\u00e7in ge\u00e7ici \u00e7\u00f6z\u00fcm):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f \u00c7ift&lt;X,Y&gt; {<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6nce \u00f6zel X;<\/tt><br \/>\n<tt> \u00a0\u00a0 \u00f6zel Y saniye;<\/tt><br \/>\n<tt> \u00a0\u00a0 ...<\/tt><br \/>\n<tt> \u00a0\u00a0 halk <b> statik<\/b> &lt;<b> A<\/b> ,<b> B<\/b> ,X <b> A'y\u0131 geni\u015fletir<\/b> ,Y <b> B'yi uzat\u0131r<\/b> &gt; B addToMap(Pair&lt;X,Y&gt; \u00e7ifti, Map&lt;)<b> A<\/b> ,<b> B<\/b> &gt; haritas\u0131) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 return map.put(\u00e7ift.ilk,\u00e7ift.ikinci);<\/tt><br \/>\n<tt> \u00a0\u00a0 }<\/tt><br \/>\n<tt> }<\/tt><br \/>\n<tt> s\u0131n\u0131f Testi {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0 public static void main(String[] args) {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Pair&lt;String,Long&gt; \u00e7ifti = yeni Pair&lt;&gt;(\"ABC\",42L);<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Map&lt;CharSequence, Number&gt; haritas\u0131 = HashMap&lt;CharSequence, Number&gt;();<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0 Numara numaras\u0131 = <b> \u00c7ift<\/b> .addToMap(<b> \u00e7ift<\/b> ,harita);<\/tt><br \/>\n<tt> \u00a0\u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>jenerik <tt> addToMap()<\/tt> y\u00f6ntemin d\u00f6rt t\u00fcr parametresi vard\u0131r: iki yer tutucu <tt> X<\/tt> Ve <tt> e<\/tt> \u00e7iftin t\u00fcr\u00fc ve iki yer tutucu i\u00e7in <tt> A<\/tt> Ve <tt> B <\/tt> Haritan\u0131n t\u00fcr\u00fc i\u00e7in. <tt> A<\/tt> Ve <tt> B<\/tt> s\u00fcper t\u00fcrleridir <tt> X<\/tt> Ve <tt> e<\/tt> , \u00c7\u00fcnk\u00fc <tt> X<\/tt> Ve <tt> e<\/tt> \u00a0 ile beyan edilir <tt> A<\/tt> Ve <tt> B<\/tt> \u00fcst s\u0131n\u0131rlar\u0131 olarak. (Genel y\u00f6ntemin t\u00fcr parametrelerinin <tt> X<\/tt> Ve <tt> e<\/tt> konuyla hi\u00e7bir ilgisi yok <tt> \u00c7ift<\/tt> s\u0131n\u0131f\u0131n <tt> X<\/tt> Ve <tt> e<\/tt> parametreler.\u00a0 \u0130simler <tt> X<\/tt> Ve <tt> e<\/tt> \u00e7iftin t\u00fcr parametreleri olarak kolayca tan\u0131nabilmelerini sa\u011flamak amac\u0131yla genel y\u00f6ntem i\u00e7in yeniden kullan\u0131l\u0131r. D\u00f6rt tip parametresi kullanarak kesin d\u00f6n\u00fc\u015f tipini istedi\u011fimiz gibi bildirebiliriz: haritan\u0131n de\u011fer tipiyle ayn\u0131 tiptir.<\/p>\n<p>\u00d6rnek (genel bir s\u0131n\u0131f\u0131n statik ba\u011flam\u0131nda type parametresinin yasa d\u0131\u015f\u0131 kullan\u0131m\u0131na ili\u015fkin):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f Baz\u0131 S\u0131n\u0131f<b> <span style=\"color:#000099;\"> &lt;T&gt;<\/span> <\/b> {<\/tt><br \/>\n<tt> \u00a0 \/\/ <\/tt> <i> statik ba\u015flat\u0131c\u0131, statik alan, statik y\u00f6ntem<\/i><br \/>\n<tt> \u00a0 <b> statik<\/b> {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 Baz\u0131 S\u0131n\u0131flar&lt;<b> <span style=\"color:#000099;\"> T<\/span> <\/b> &gt; testi = yeni SomeClass&lt;<b> <span style=\"color:#000099;\"> T<\/span> <\/b> &gt;(); <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \u00f6zel <b> statik<\/b> <b> <span style=\"color:#000099;\"> T<\/span> <\/b> k\u00fcreselBilgi;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0 halk\u00a0 <b> statik<\/b> <b> <span style=\"color:#000099;\"> T <\/span> <\/b> getGlobalInfo() {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 globalInfo'yu d\u00f6nd\u00fcr;<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \/\/ <\/tt> <i> statik olmayan ba\u015flat\u0131c\u0131, statik olmayan alan, statik olmayan y\u00f6ntem<\/i><br \/>\n<tt> \u00a0 {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 Baz\u0131 S\u0131n\u0131flar&lt;<b> <span style=\"color:#000099;\"> T<\/span> <\/b> &gt; testi = yeni SomeClass&lt;<b> <span style=\"color:#000099;\"> T<\/span> <\/b> &gt;();<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \u00f6zel\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <b> <span style=\"color:#000099;\"> T<\/span> <\/b> yerelBilgi;<\/tt><br \/>\n<tt> \u00a0 halk\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <b> <span style=\"color:#000099;\"> T<\/span> <\/b> getLocalInfo() {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 localInfo'yu d\u00f6nd\u00fcr;<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \/\/ <\/tt> <i> Statik i\u00e7 i\u00e7e ge\u00e7mi\u015f t\u00fcrler<\/i><br \/>\n<tt> \u00a0 halk <b> statik<\/b> <b> s\u0131n\u0131f<\/b> Ba\u015far\u0131s\u0131zl\u0131k \u0130stisnay\u0131 geni\u015fletir {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 \u00f6zel final <b> <span style=\"color:#000099;\"> T<\/span> <\/b> bilgi;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 genel ba\u015far\u0131s\u0131zl\u0131k(<b> <span style=\"color:#000099;\"> T<\/span> <\/b> t) { bilgi = t; }\u00a0\u00a0\u00a0\u00a0\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 halk <b> <span style=\"color:#000099;\"> T<\/span> <\/b> getInfo() { bilgi d\u00f6nd\u00fcr; }\u00a0\u00a0\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0 }<\/tt><br \/>\n<tt> \u00a0 \u00f6zel <b> aray\u00fcz<\/b> Kopyalanabilir {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 <b> <span style=\"color:#000099;\"> T<\/span> <\/b> kopyala();\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \u00f6zel <b> numaraland\u0131rma<\/b> Durum {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 GE\u00c7ERL\u0130, GE\u00c7ERS\u0130Z;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 \u00f6zel <b> <span style=\"color:#000099;\"> T<\/span> <\/b> bilgi; \/\/ hata<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 genel ge\u00e7ersiz setInfo(<b> <span style=\"color:#000099;\"> T<\/span> <\/b> t) { bilgi = t; } <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 halk <b> <span style=\"color:#000099;\"> T<\/span> <\/b> getInfo() { bilgi d\u00f6nd\u00fcr; }\u00a0\u00a0\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \/\/ <\/tt> <i> statik olmayan i\u00e7 i\u00e7e ge\u00e7mi\u015f t\u00fcrler<\/i><br \/>\n<tt> \u00a0 halk <b> s\u0131n\u0131f<\/b> Eri\u015fimci {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 halk <b> <span style=\"color:#000099;\"> T<\/span> <\/b> getInfo() { localInfo'yu d\u00f6nd\u00fcr; }<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>\u00d6rnek, type parametresinin genel bir s\u0131n\u0131f\u0131n statik ba\u011flam\u0131nda kullan\u0131lamayaca\u011f\u0131n\u0131 g\u00f6stermektedir.\u00a0 Ayr\u0131ca i\u00e7 i\u00e7e aray\u00fczlerin ve numaraland\u0131rma t\u00fcrlerinin s\u0131n\u0131f\u0131n statik t\u00fcr \u00fcyeleri olarak kabul edildi\u011fini g\u00f6sterir.\u00a0 Yaln\u0131zca i\u00e7 s\u0131n\u0131flar, yani statik olmayan i\u00e7 i\u00e7e ge\u00e7mi\u015f s\u0131n\u0131flar, \u00e7evreleyen genel s\u0131n\u0131f\u0131n type parametresini kullanabilir.<\/p>\n<p>Bir arabirimin t\u00fcr parametresinin kapsam\u0131, alanlar veya i\u00e7 i\u00e7e ge\u00e7mi\u015f t\u00fcrler d\u0131\u015f\u0131nda arabirimin t\u00fcm tan\u0131m\u0131d\u0131r.\u00a0 Bunun nedeni, bir aray\u00fczde tan\u0131mlanan alanlar\u0131n ve i\u00e7 i\u00e7e ge\u00e7mi\u015f t\u00fcrlerin \u00f6rt\u00fcl\u00fc olarak statik olmas\u0131d\u0131r.<\/p>\n<p>\u00d6rnek (genel bir aray\u00fczde type parametresinin yasa d\u0131\u015f\u0131 kullan\u0131m\u0131na ili\u015fkin):<\/p>\n<blockquote><p><tt> aray\u00fcz SomeInterface<b> <span style=\"color:#000099;\"> &lt;T&gt;<\/span> <\/b> {<\/tt><br \/>\n<tt> \u00a0 \/\/ <\/tt> <i> alan<\/i><br \/>\n<tt> \u00a0 Baz\u0131 S\u0131n\u0131flar&lt;<b> <span style=\"color:#000099;\"> T<\/span> <\/b> &gt; de\u011feri = yeni SomeClass&lt;<b> <span style=\"color:#000099;\"> T<\/span> <\/b> &gt;();\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0 \/\/ <\/tt> <i> i\u00e7 i\u00e7e ge\u00e7mi\u015f t\u00fcr<\/i><br \/>\n<tt> \u00a0 <b> s\u0131n\u0131f<\/b> Eri\u015fimci {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 halk <b> <span style=\"color:#000099;\"> T <\/span> <\/b> getInfo() {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <b> <span style=\"color:#660000;\"> \/\/ hata<\/span> <\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 d\u00f6n\u00fc\u015f de\u011feri.getGlobalInfo();<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0 }<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \/\/ <\/tt> <i> y\u00f6ntemler<\/i><br \/>\n<tt> \u00a0 <b> <span style=\"color:#000099;\"> T<\/span> <\/b> getValue();<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>\u00d6rnek, bir arabirimin alanlar\u0131n\u0131n dolayl\u0131 olarak statik oldu\u011funu, dolay\u0131s\u0131yla type parametresinin genel bir arabirimin alan bildiriminin herhangi bir yerinde kullan\u0131lamayaca\u011f\u0131n\u0131 g\u00f6sterir.\u00a0 Benzer \u015fekilde, i\u00e7 i\u00e7e ge\u00e7mi\u015f s\u0131n\u0131f, bir i\u00e7 s\u0131n\u0131f de\u011fil, statik i\u00e7 i\u00e7e ge\u00e7mi\u015f bir s\u0131n\u0131f olarak kabul edilir ve bu nedenle, i\u00e7 i\u00e7e ge\u00e7mi\u015f s\u0131n\u0131f\u0131n herhangi bir yerinde type parametresinin kullan\u0131lmas\u0131 yasa d\u0131\u015f\u0131d\u0131r.<\/p>\n<p><b> <i> \u0130\u00e7 i\u00e7e ge\u00e7mi\u015f statik s\u0131n\u0131flar ve aray\u00fczler i\u00e7in ge\u00e7ici \u00e7\u00f6z\u00fcm:<\/i> <\/b><\/p>\n<p>Statik i\u00e7 i\u00e7e s\u0131n\u0131flar ve aray\u00fczler s\u00f6z konusu oldu\u011funda bu b\u00fcy\u00fck bir felaket de\u011fildir.\u00a0 Ge\u00e7ici bir \u00e7\u00f6z\u00fcm olarak statik s\u0131n\u0131f\u0131 veya aray\u00fcz\u00fcn kendisini olu\u015fturabiliriz.<\/p>\n<p>\u00d6rnek (ge\u00e7ici \u00e7\u00f6z\u00fcm &#8211; i\u00e7 i\u00e7e ge\u00e7mi\u015f statik t\u00fcr\u00fc olu\u015fturun):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f Paketleyici<b> <span style=\"color:#000099;\"> &lt;T&gt;<\/span> <\/b> {<\/tt><br \/>\n<tt> \u00a0 \u00f6zel final <b> <span style=\"color:#000099;\"> T<\/span> <\/b> Nesne;<\/tt><\/p><\/blockquote>\n<blockquote><p><tt> \u00a0 genel Paketleyici(<b> <span style=\"color:#000099;\"> T<\/span> <\/b> t) { Nesne = t; }<\/tt><br \/>\n<tt> \u00a0 halk <b> <span style=\"color:#000099;\"> T<\/span> <\/b> getWrapper() { Nesneyi d\u00f6nd\u00fcr\u00fcr; }<\/tt><tt> \u00a0 halka a\u00e7\u0131k De\u011fi\u015fmez<b> &lt;T&gt;<\/b> makeImmutable() {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 yeni De\u011fi\u015fmezi d\u00f6nd\u00fcr<b> &lt;T&gt;<\/b> (Nesne);<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 herkese a\u00e7\u0131k De\u011fi\u015fken<b> &lt;T&gt;<\/b> makeMutable() {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 yeni Mutable'\u0131 d\u00f6nd\u00fcr<b> &lt;T&gt;<\/b> (Nesne);<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \u00f6zel statik &lt;A&gt; A makeClone(A theObject) { ... }<\/tt><\/p>\n<p><tt> \u00a0 public statik son s\u0131n\u0131f De\u011fi\u015fmez<b> &lt;A&gt;<\/b> { <b> \/\/ art\u0131k genel bir s\u0131n\u0131f<\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00f6zel final <b> A<\/b> Nesne;<\/tt><\/p>\n<p><tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 genel De\u011fi\u015fmez(<b> A<\/b> arg\u00fcman) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 theObject = makeClone(arg);<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 halk <b> A<\/b> getWrappedItem() {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 makeClone(theObject) i\u015flevini d\u00f6nd\u00fcr\u00fcn;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 genel statik s\u0131n\u0131f De\u011fi\u015ftirilebilir<b> &lt;A&gt;<\/b> {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ... benzer ...<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>Genel olamayacaklar\u0131 i\u00e7in i\u00e7 i\u00e7e numaraland\u0131rma t\u00fcrleri i\u00e7in b\u00f6yle bir ge\u00e7ici \u00e7\u00f6z\u00fcm yoktur.<\/p>\n<p><b> <i> \u0130\u00e7 i\u00e7e ge\u00e7mi\u015f statik s\u0131n\u0131flar i\u00e7in ge\u00e7ici \u00e7\u00f6z\u00fcm:<\/i> <\/b><\/p>\n<p>\u0130\u00e7 i\u00e7e ge\u00e7mi\u015f statik t\u00fcr bir s\u0131n\u0131fsa alternatif bir ge\u00e7ici \u00e7\u00f6z\u00fcm, statik s\u0131n\u0131f\u0131 statik olmayan bir i\u00e7 s\u0131n\u0131fa d\u00f6n\u00fc\u015ft\u00fcrmek olabilir.<\/p>\n<p>\u00d6rnek (ge\u00e7ici \u00e7\u00f6z\u00fcm &#8211; bir i\u00e7 s\u0131n\u0131f kullan\u0131n):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f Paketleyici<b> <span style=\"color:#000099;\"> &lt;T&gt;<\/span> <\/b> {<\/tt><br \/>\n<tt> \u00a0 \u00f6zel final <b> <span style=\"color:#000099;\"> T<\/span> <\/b> Nesne;<\/tt><\/p><\/blockquote>\n<blockquote><p><tt> \u00a0 genel Paketleyici(<b> <span style=\"color:#000099;\"> T<\/span> <\/b> t) { Nesne = t; }<\/tt><br \/>\n<tt> \u00a0 halk <b> <span style=\"color:#000099;\"> T<\/span> <\/b> getWrapper() { Nesneyi d\u00f6nd\u00fcr\u00fcr; }<\/tt><tt> \u00a0 public De\u011fi\u015fken makeMutable() {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 geri d\u00f6nmek <b> Bu.<\/b> new Mutable(theObject);<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 public De\u011fi\u015fmez makeImmutable() {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 geri d\u00f6nmek <b> Bu.<\/b> new De\u011fi\u015fmez(theObject);<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \u00f6zel statik &lt;A&gt; A makeClone(A theObject) { ... }<\/tt><\/p>\n<p><tt> \u00a0 genel son s\u0131n\u0131f De\u011fi\u015fmez {\u00a0 <b> \/\/ art\u0131k statik bir s\u0131n\u0131f de\u011fil<\/b> <\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 \u00f6zel final <b> T<\/b> Nesne;<\/tt><\/p>\n<p><tt> \u00a0\u00a0\u00a0\u00a0\u00a0 genel De\u011fi\u015fmez(<b> T<\/b> arg\u00fcman) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 theObject = makeClone(arg);<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 }<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 halk <b> T<\/b> getWrappedItem() {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 makeClone(theObject) i\u015flevini d\u00f6nd\u00fcr\u00fcn;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 }<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 genel s\u0131n\u0131f De\u011fi\u015ftirilebilir\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ... benzer ...<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>Bu ge\u00e7ici \u00e7\u00f6z\u00fcm belirli bir miktarda ek y\u00fck\u00fc beraberinde getirir \u00e7\u00fcnk\u00fc t\u00fcm i\u00e7 s\u0131n\u0131flar\u0131n d\u0131\u015f t\u00fcr\u00fcn bir \u00f6rne\u011fine gizli bir referans\u0131 vard\u0131r; bu \u00f6rnekte buna ne ihtiya\u00e7 duyarlar ne de bundan faydalan\u0131rlar; gizli referans sadece bagajd\u0131r.\u00a0 \u00c7o\u011fu zaman, i\u00e7 s\u0131n\u0131flar\u0131 \u00e7evreleyen s\u0131n\u0131f\u0131n \u00f6zel bir uygulama detay\u0131 olarak tutmak i\u00e7in i\u00e7 s\u0131n\u0131flar aray\u00fczlerle birle\u015ftirilir.\u00a0 Burada da ayn\u0131s\u0131n\u0131 yapabiliriz.<\/p>\n<p>\u00d6rnek (\u00f6nceki ge\u00e7ici \u00e7\u00f6z\u00fcm d\u00fczeltildi):<\/p>\n<blockquote><p><tt> s\u0131n\u0131f Paketleyici<b> <span style=\"color:#000099;\"> &lt;T&gt;<\/span> <\/b> {<\/tt><br \/>\n<tt> \u00a0 \u00f6zel final <b> <span style=\"color:#000099;\"> T<\/span> <\/b> Nesne;<\/tt><\/p><\/blockquote>\n<blockquote><p><tt> \u00a0 genel Paketleyici(<b> <span style=\"color:#000099;\"> T<\/span> <\/b> t) { Nesne = t; }<\/tt><br \/>\n<tt> \u00a0 halk <b> <span style=\"color:#000099;\"> T<\/span> <\/b> getWrapper() { Nesneyi d\u00f6nd\u00fcr\u00fcr; }<\/tt><tt> \u00a0 herkese a\u00e7\u0131k De\u011fi\u015fken<b> &lt;T&gt;<\/b> makeMutable() {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 return this.new Mutable(theObject);<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 halka a\u00e7\u0131k De\u011fi\u015fmez<b> &lt;T&gt;<\/b> makeImmutable() {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 return this.new Immutable(theObject);<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 \u00f6zel statik &lt;A&gt; A makeClone(A theObject) { ... }<\/tt><\/p>\n<p><tt> \u00a0 <b> genel aray\u00fcz <\/b> De\u011fi\u015ftirilemez&lt;S&gt; {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 S getWrappedItem();<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 <b> genel aray\u00fcz <\/b> De\u011fi\u015ftirilebilir&lt;S&gt; {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 S getWrappedItem();<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 void setWrappedItem(S arg);<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 <b> \u00f6zel<\/b> son s\u0131n\u0131f De\u011fi\u015fmez Uygulama <b> De\u011fi\u015fmez&lt;T&gt;'yi uygular<\/b> {\u00a0<\/tt><\/p>\n<p><tt> \u00a0\u00a0\u00a0\u00a0\u00a0 \u00f6zel final T theObject;<\/tt><\/p>\n<p><tt> \u00a0\u00a0\u00a0\u00a0\u00a0 public ImmutableImplementation(T arg) {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 theObject = makeClone(arg);<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 }<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 genel T getWrappedItem() {<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 makeClone(theObject) i\u015flevini d\u00f6nd\u00fcr\u00fcn;<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0 }<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> \u00a0 <b> \u00f6zel<\/b> s\u0131n\u0131f MutableImplementation <b> Mutable&lt;T&gt;'yi uygular<\/b> {\u00a0<\/tt><br \/>\n<tt> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ... benzer ...<\/tt><br \/>\n<tt> \u00a0 }<\/tt><br \/>\n<tt> }<\/tt><\/p><\/blockquote>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, i\u00e7 i\u00e7e ge\u00e7mi\u015f genel aray\u00fczlerin genel olmas\u0131 gerekirken i\u00e7 \u00f6zel s\u0131n\u0131flar, \u00e7evreleyen s\u0131n\u0131f\u0131n type parametresini kullanabilir.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<table width=\"100%\" cellpadding=\"10\">\n<tbody>\n<tr valign=\"TOP\">\n<td colspan=\"2\" width=\"68%\"><b>\u00a0<\/b><\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Daha fazla bilgi i\u00e7in l\u00fctfen \u015fu SSS&#8217;&#8217;ye bak\u0131n: <a href=\"http:\/\/www.angelikalanger.com\/GenericsFAQ\/JavaGenericsFAQ.html#SECTION1\" rel=\"nofollow\">http:\/\/www.angelikalanger.com\/GenericsFAQ\/JavaGenericsFAQ.html#SECTION1<\/a> K\u0131saca SSS&#8217;&#8217;de baz\u0131 \u00f6nemli noktalar\u0131 burada bulabilirsiniz. \u00d6rnek (genel \u00f6nce): class \u00c7ift&lt;X,Y&gt; {\u00a0 \u00a0 \u00f6zel X; \u00a0 \u00f6zel Y saniye; \u00a0 genel \u00c7ift(X a1, Y a2) { \u00a0\u00a0\u00a0 ilk = a1; \u00a0\u00a0\u00a0 ikinci = a2; \u00a0 } \u00a0 public X getFirst() { \u00f6nce d\u00f6n; [&hellip;]<\/p>\n","protected":false},"author":65283547,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Generics in short form","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1017],"tags":[18369,2549795,6280762],"class_list":["post-31","post","type-post","status-publish","format-standard","hentry","category-java","tag-jenerikler","tag-java","tag-java-jenerikleri"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4CoHV-v","jetpack-related-posts":[{"id":2532,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/02\/%d0%b2%d1%82%d0%be%d1%80%d0%b8%d1%8f%d1%82-%d0%b2%d1%81%d0%b5%d0%bb%d0%b5%d0%bd%d1%81%d0%ba%d0%b8-%d1%81%d1%8a%d0%b1%d0%be%d1%80-%d0%b2-%d0%ba%d0%be%d0%bd%d1%81%d1%82%d0%b0%d0%bd%d1%82%d0%b8%d0%bd\/","url_meta":{"origin":31,"position":0},"title":"Konstantinopolis'teki ikinci ek\u00fcmenik konsey (381) - Kutsal Ruh doktrininin do\u011frulanmas\u0131","author":"vkrastev2014","date":"02.10.2026","format":false,"excerpt":"\u0412\u0442\u043e\u0440\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440 \u0432 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b (381 \u0433.) \u2013 \u0443\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0443\u0447\u0435\u043d\u0438\u0435\u0442\u043e \u0437\u0430 \u0421\u0432\u0435\u0442\u0438\u044f \u0414\u0443\u0445 \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430 \u0445\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u0442\u0432\u043e\u0442\u043e \u2022 \u0412\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440\u0438 \u2022 IV \u0432\u0435\u043a \u0412\u0442\u043e\u0440\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d \u043f\u0440\u0435\u0437 381 \u0433. \u0432 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b, \u0435 \u0435\u0434\u043d\u043e \u043e\u0442 \u043d\u0430\u0439-\u0432\u0430\u0436\u043d\u0438\u0442\u0435 \u0441\u044a\u0431\u0438\u0442\u0438\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430 \u043d\u0430 \u0440\u0430\u043d\u043d\u043e\u0442\u043e \u0445\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u0442\u0432\u043e. \u041d\u0430 \u043d\u0435\u0433\u043e \u0435 \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u043d\u0430 \u041d\u0438\u043a\u0435\u0439\u0441\u043a\u0430\u0442\u0430 \u0432\u044f\u0440\u0430 \u043e\u0442 325\u2026","rel":"","context":"In &quot;Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler&quot;","block_context":{"text":"Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":2549,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/02\/%d0%bf%d0%b5%d1%82%d0%b8%d1%8f%d1%82-%d0%b2%d1%81%d0%b5%d0%bb%d0%b5%d0%bd%d1%81%d0%ba%d0%b8-%d1%81%d1%8a%d0%b1%d0%be%d1%80-%d0%b2-%d0%ba%d0%be%d0%bd%d1%81%d1%82%d0%b0%d0%bd%d1%82%d0%b8%d0%bd%d0%be\/","url_meta":{"origin":31,"position":1},"title":"Be\u015finci Konstantinopolis Ek\u00fcmenik Konseyi (553): \u00dc\u00e7 Ba\u015f Tart\u0131\u015fmas\u0131, Kad\u0131k\u00f6y'\u00fcn Teolojik Miras\u0131 ve \u0130mparator I. Justinianus'un Politikas\u0131","author":"vkrastev2014","date":"02.10.2026","format":false,"excerpt":"\u041f\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440 \u0432 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b (553 \u0433.): \u0441\u043f\u043e\u0440\u044a\u0442 \u0437\u0430 \u201e\u0422\u0440\u0438\u0442\u0435 \u0433\u043b\u0430\u0432\u0438\u201c, \u0431\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u0441\u043a\u043e\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u043e \u043d\u0430 \u0425\u0430\u043b\u043a\u0438\u0434\u043e\u043d \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u0442\u0430 \u043d\u0430 \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u042e\u0441\u0442\u0438\u043d\u0438\u0430\u043d I \u0420\u0435\u0437\u044e\u043c\u0435: \u041f\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u043a\u0430\u0442\u043e \u0412\u0442\u043e\u0440\u0438\u044f \u0441\u044a\u0431\u043e\u0440 \u0432 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b, \u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0436\u0434\u0430 \u043f\u0440\u0435\u0437 553 \u0433. \u043f\u043e \u0432\u0440\u0435\u043c\u0435 \u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u042e\u0441\u0442\u0438\u043d\u0438\u0430\u043d I. \u041d\u0435\u0433\u043e\u0432\u0430\u0442\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430 \u0446\u0435\u043b \u0435 \u0434\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u2026","rel":"","context":"In &quot;Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler&quot;","block_context":{"text":"Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_51_20-pm.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_51_20-pm.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_51_20-pm.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_51_20-pm.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_51_20-pm.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_51_20-pm.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":657,"url":"https:\/\/vkrastev1blog.com\/2024\/10\/19\/%d0%bc%d0%be%d1%8f-%d0%bf%d0%be%d0%b3%d0%bb%d0%b5%d0%b4-%d0%b7%d0%b0-%d0%b1%d0%be%d0%b3-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d1%85%d1%80%d0%b8%d1%81%d1%82%d0%be%d1%81\/","url_meta":{"origin":31,"position":2},"title":"Tanr\u0131, \u0130ncil ve Mesih hakk\u0131ndaki g\u00f6r\u00fc\u015f\u00fcm","author":"vkrastev2014","date":"19.10.2024","format":false,"excerpt":"\u0418\u043a\u043e\u043d\u0430 \u043d\u0430 \u0418\u0441\u0443\u0441 \u0425\u0440\u0438\u0441\u0442\u043e\u0441 \u0417\u0434\u0440\u0430\u0432\u0435\u0439\u0442\u0435 \u0438\u0441\u043a\u0430\u043c \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u044f \u043c\u043e\u0438\u0442\u0435 \u0440\u0430\u0437\u0441\u044a\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u0430\u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a \u0437\u0430 \u0411\u043e\u0433 \u0438 \u0437\u0430 \u0425\u0440\u0438\u0441\u0442\u043e\u0441. \u0410\u0437 \u0441\u044a\u043c \u043d\u043e\u0432 \u0432\u044a\u0432 \u0432\u044f\u0440\u0430\u0442\u0430 \u0438 \u0442\u0435\u043f\u044a\u0440\u0432\u0430 \u043c\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438 \u0434\u0430 \u0443\u0447\u0430 \u043f\u043e\u0432\u0435\u0447\u0435 \u0437\u0430 \u0411\u043e\u0433. \u041e\u043f\u0438\u0442\u0432\u0430\u043c \u0441\u0438 \u0434\u0430 \u0441\u0438 \u043e\u0431\u044f\u0441\u043d\u044f \u043d\u0435\u0449\u0430\u0442\u0430 \u043a\u0430\u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a \u0438 \u0438\u043d\u0436\u0438\u043d\u0435\u0440 \u043d\u043e \u0441\u0438 \u043c\u0438\u0441\u043b\u044f, \u0447\u0435 \u0447\u043e\u0432\u0435\u0448\u043a\u0438\u044f \u043c\u043e\u0437\u044a\u043a \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430\u2026","rel":"","context":"In &quot;Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler&quot;","block_context":{"text":"Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/10\/image-4.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1733,"url":"https:\/\/vkrastev1blog.com\/2025\/01\/29\/%d0%b7%d0%b0-%d0%b1%d0%be%d0%b3-%d0%b8-%d0%b2%d1%81%d0%b5%d0%bb%d0%b5%d0%bd%d0%b0%d1%82%d0%b0\/","url_meta":{"origin":31,"position":3},"title":"Tanr\u0131 ve Evren i\u00e7in","author":"vkrastev2014","date":"29.01.2025","format":false,"excerpt":"\u041f\u0440\u0438\u0447\u0438\u043d\u0438 \u0434\u0430 \u0432\u044f\u0440\u0432\u0430\u043c\u0435, \u0447\u0435 \u0411\u043e\u0433 \u043d\u0430\u0438\u0441\u0442\u0438\u043d\u0430 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430. \u043e\u0442 \u041c\u0435\u0440\u0438\u043b\u0438\u043d \u0410\u0434\u0430\u043c\u0441\u044a\u043d \u0412\u0441\u0435\u043b\u0435\u043d\u0430\u0442\u0430 \u0438\u043c\u0430 \u043d\u0430\u0447\u0430\u043b\u043e - \u043a\u0430\u043a\u0432\u043e \u0433\u043e \u0435 \u043f\u0440\u0435\u0434\u0438\u0437\u0432\u0438\u043a\u0430\u043b\u043e? \u0423\u0447\u0435\u043d\u0438\u0442\u0435 \u0441\u0430 \u0443\u0431\u0435\u0434\u0435\u043d\u0438, \u0447\u0435 \u043d\u0430\u0448\u0430\u0442\u0430 \u0412\u0441\u0435\u043b\u0435\u043d\u0430 \u0435 \u0437\u0430\u043f\u043e\u0447\u043d\u0430\u043b\u0430 \u0441 \u0435\u0434\u043d\u0430 \u043e\u0433\u0440\u043e\u043c\u043d\u0430 \u0435\u043a\u0441\u043f\u043b\u043e\u0437\u0438\u044f \u043d\u0430 \u0435\u043d\u0435\u0440\u0433\u0438\u044f \u0438 \u0441\u0432\u0435\u0442\u043b\u0438\u043d\u0430, \u043a\u043e\u044f\u0442\u043e \u043d\u0430\u0440\u0438\u0447\u0430\u043c\u0435 \u0413\u043e\u043b\u0435\u043c\u0438\u044f\u0442 \u0432\u0437\u0440\u0438\u0432. \u0422\u043e\u0432\u0430 \u0435\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u0441\u044a\u0431\u0438\u0442\u0438\u0435 \u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u043d\u0430\u0447\u0430\u043b\u043e\u0442\u043e \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u043e, \u043a\u043e\u0435\u0442\u043e \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430: \u0412\u0441\u0435\u043b\u0435\u043d\u0430\u0442\u0430, \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u0442\u043e\u2026","rel":"","context":"In &quot;Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler&quot;","block_context":{"text":"Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2025\/01\/093e0eeeb6f9dbc2d2ef6a13bec53c59-20240927143705-1.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2025\/01\/093e0eeeb6f9dbc2d2ef6a13bec53c59-20240927143705-1.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2025\/01\/093e0eeeb6f9dbc2d2ef6a13bec53c59-20240927143705-1.jpeg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2025\/01\/093e0eeeb6f9dbc2d2ef6a13bec53c59-20240927143705-1.jpeg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2537,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/02\/%d1%82%d1%80%d0%b5%d1%82%d0%b8%d1%8f%d1%82-%d0%b2%d1%81%d0%b5%d0%bb%d0%b5%d0%bd%d1%81%d0%ba%d0%b8-%d1%81%d1%8a%d0%b1%d0%be%d1%80-%d0%b2-%d0%b5%d1%84%d0%b5%d1%81-431-%d0%b3-%d1%85%d1%80%d0%b8%d1%81\/","url_meta":{"origin":31,"position":4},"title":"Efes \u00dc\u00e7\u00fcnc\u00fc Ek\u00fcmenik Konseyi (431): \u0130skenderiyeli Cyril ile Nestorius aras\u0131ndaki Kristolojik tart\u0131\u015fma ve Tanr\u0131'n\u0131n Annesi doktrininin onaylanmas\u0131","author":"vkrastev2014","date":"02.10.2026","format":false,"excerpt":"\u0422\u0440\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440 \u0432 \u0415\u0444\u0435\u0441 (431 \u0433.): \u0445\u0440\u0438\u0441\u0442\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u0438\u044f\u0442 \u0441\u043f\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 \u041a\u0438\u0440\u0438\u043b \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0438\u0439\u0441\u043a\u0438 \u0438 \u041d\u0435\u0441\u0442\u043e\u0440\u0438\u0439 \u0438 \u0443\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0443\u0447\u0435\u043d\u0438\u0435\u0442\u043e \u0437\u0430 \u0411\u043e\u0433\u043e\u0440\u043e\u0434\u0438\u0446\u0430 \u041d\u0430\u0443\u0447\u043d\u043e-\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e \u0438 \u0431\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u0441\u043a\u043e \u0438\u0437\u0441\u043b\u0435\u0434\u0432\u0430\u043d\u0435 \u0410\u0432\u0442\u043e\u0440: \u0412\u0435\u043b\u0438\u0441\u043b\u0430\u0432 \u041a\u0440\u044a\u0441\u0442\u0435\u0432\u0422\u0435\u043c\u0430: \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430 \u0440\u0430\u043d\u043d\u0430\u0442\u0430 \u0426\u044a\u0440\u043a\u0432\u0430 \u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u043d\u0430 \u0445\u0440\u0438\u0441\u0442\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u0442\u0430 \u0434\u043e\u0433\u043c\u0430\u0442\u0438\u043a\u0430\u041f\u0435\u0440\u0438\u043e\u0434: 428\u2013451 \u0433.\u041e\u0441\u043d\u043e\u0432\u043d\u043e \u0441\u044a\u0431\u0438\u0442\u0438\u0435: \u0422\u0440\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u0415\u0444\u0435\u0441, 431 \u0433. \u0420\u0435\u0437\u044e\u043c\u0435 \u0422\u0440\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u2026","rel":"","context":"In &quot;Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler&quot;","block_context":{"text":"Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":2556,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/02\/%d1%88%d0%b5%d1%81%d1%82%d0%b8%d1%8f%d1%82-%d0%b2%d1%81%d0%b5%d0%bb%d0%b5%d0%bd%d1%81%d0%ba%d0%b8-%d1%81%d1%8a%d0%b1%d0%be%d1%80-%d0%b2-%d0%ba%d0%be%d0%bd%d1%81%d1%82%d0%b0%d0%bd%d1%82%d0%b8%d0%bd\/","url_meta":{"origin":31,"position":5},"title":"Alt\u0131nc\u0131 Konstantinopolis Ek\u00fcmenik Konsili (680-681): monotelitizmin k\u0131nanmas\u0131 ve \u0130sa Mesih'teki iki iradenin ve iki eylemin onaylanmas\u0131","author":"vkrastev2014","date":"02.10.2026","format":false,"excerpt":"\u0428\u0435\u0441\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440 \u0432 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b (680\u2013681 \u0433.): \u043e\u0441\u044a\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u043c\u043e\u043d\u043e\u0442\u0435\u043b\u0438\u0442\u0441\u0442\u0432\u043e\u0442\u043e \u0438 \u0443\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0434\u0432\u0435\u0442\u0435 \u0432\u043e\u043b\u0438 \u0438 \u0434\u0432\u0435\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0418\u0438\u0441\u0443\u0441 \u0425\u0440\u0438\u0441\u0442\u043e\u0441 \u041d\u0430\u0443\u0447\u043d\u043e-\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0430 \u0441\u0442\u0430\u0442\u0438\u044f \u0437\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430\u043d\u0435 \u0432 WordPress \u0420\u0435\u0437\u044e\u043c\u0435: \u0428\u0435\u0441\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u043a\u0430\u0442\u043e \u0422\u0440\u0435\u0442\u0438\u044f \u0441\u044a\u0431\u043e\u0440 \u0432 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b, \u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0436\u0434\u0430 \u0432 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 680\u2013681 \u0433. \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u0442\u043e \u043d\u0430 \u0432\u0438\u0437\u0430\u043d\u0442\u0438\u0439\u0441\u043a\u0438\u044f \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d IV\u2026","rel":"","context":"In &quot;Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler&quot;","block_context":{"text":"Kutsal Kitap'a ve ruh ve bedene adanm\u0131\u015f makaleler","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/yxsv0k-cfybsgrn4iacbsni6wvorwsimqx4mcnk6i7vvno8-yygtibr2p6c7uhf18h7kykuh-oqxfnmevvk2efigpws1vzqug_m-ryim8mdynspdwkucquhts-ckr3g53iyvlogvjhinycbsjewtpqbgjh-apj7ffnumanhcavu.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/yxsv0k-cfybsgrn4iacbsni6wvorwsimqx4mcnk6i7vvno8-yygtibr2p6c7uhf18h7kykuh-oqxfnmevvk2efigpws1vzqug_m-ryim8mdynspdwkucquhts-ckr3g53iyvlogvjhinycbsjewtpqbgjh-apj7ffnumanhcavu.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/yxsv0k-cfybsgrn4iacbsni6wvorwsimqx4mcnk6i7vvno8-yygtibr2p6c7uhf18h7kykuh-oqxfnmevvk2efigpws1vzqug_m-ryim8mdynspdwkucquhts-ckr3g53iyvlogvjhinycbsjewtpqbgjh-apj7ffnumanhcavu.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/yxsv0k-cfybsgrn4iacbsni6wvorwsimqx4mcnk6i7vvno8-yygtibr2p6c7uhf18h7kykuh-oqxfnmevvk2efigpws1vzqug_m-ryim8mdynspdwkucquhts-ckr3g53iyvlogvjhinycbsjewtpqbgjh-apj7ffnumanhcavu.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/yxsv0k-cfybsgrn4iacbsni6wvorwsimqx4mcnk6i7vvno8-yygtibr2p6c7uhf18h7kykuh-oqxfnmevvk2efigpws1vzqug_m-ryim8mdynspdwkucquhts-ckr3g53iyvlogvjhinycbsjewtpqbgjh-apj7ffnumanhcavu.jpg?resize=1050%2C600&ssl=1 3x"},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts\/31","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/users\/65283547"}],"replies":[{"embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/comments?post=31"}],"version-history":[{"count":8,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts\/31\/revisions"}],"predecessor-version":[{"id":42,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts\/31\/revisions\/42"}],"wp:attachment":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/media?parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/categories?post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/tags?post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}