{"id":29940,"date":"2025-09-21T23:40:21","date_gmt":"2025-09-21T20:40:21","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/"},"modified":"2025-09-21T23:40:21","modified_gmt":"2025-09-21T20:40:21","slug":"java-8-fonksiyonel-arabirimler","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/","title":{"rendered":"Java 8 Fonksiyonel Arabirimler"},"content":{"rendered":"<p># Java 8 Fonksiyonel Aray\u00fczler:  Uzman Rehberi<\/p>\n<p>Java 8&#8217;in getirdi\u011fi en \u00f6nemli yeniliklerden biri \u015f\u00fcphesiz fonksiyonel programlama deste\u011fidir.  Ancak, bu yeni yakla\u015f\u0131m\u0131 tam olarak kavramak i\u00e7in \u00f6ncelikle fonksiyonel aray\u00fczleri (functional interfaces) anlamak gerekmektedir.  Bu makale, Java 8 fonksiyonel aray\u00fczlerini s\u0131f\u0131rdan uzman seviyesine kadar ad\u0131m ad\u0131m ele alarak, ger\u00e7ek d\u00fcnya senaryolar\u0131 ve performans optimizasyonu teknikleriyle zenginle\u015ftirilmi\u015f kapsaml\u0131 bir rehber sunmaktad\u0131r.  Fonksiyonel programlaman\u0131n g\u00fcc\u00fcn\u00fc ke\u015ffetmek ve kodunuzu daha temiz, okunabilir ve verimli hale getirmek i\u00e7in okumaya devam edin!<\/p>\n<p><strong>Java Fonksiyonel Aray\u00fczleri Nedir? Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/strong><\/p>\n<p>Fonksiyonel aray\u00fczler, tek bir soyut metodu (abstract method) i\u00e7eren aray\u00fczlerdir.  Java 8 \u00f6ncesinde, aray\u00fczler yaln\u0131zca sabit de\u011fi\u015fkenler ve soyut metotlar i\u00e7erebilirdi.  Fonksiyonel aray\u00fczler ise <code class=\"language-\">@FunctionalInterface<\/code> anotasyonu ile i\u015faretlenir (iste\u011fe ba\u011fl\u0131d\u0131r, ancak a\u00e7\u0131kl\u0131k i\u00e7in \u00f6nerilir).  Bu anotasyon, derleyiciye bu aray\u00fcz\u00fcn fonksiyonel bir aray\u00fcz olarak tasarland\u0131\u011f\u0131n\u0131 ve tek soyut metodu i\u00e7ermesi gerekti\u011fini bildirir.  Birden fazla soyut metot i\u00e7eren bir aray\u00fcz\u00fc <code class=\"language-\">@FunctionalInterface<\/code> ile i\u015faretlemek derleme hatas\u0131na neden olur.<\/p>\n<p><strong>\u00d6\u011frenme Yol Haritas\u0131:<\/strong><\/p>\n<p><strong>Yeni Ba\u015flayan:<\/strong><\/p>\n<p>* <strong>Ad\u0131m 1:<\/strong> <code class=\"language-\">@FunctionalInterface<\/code> anotasyonunu anlamak.<br \/>\n* <strong>Ad\u0131m 2:<\/strong>  <code class=\"language-\">Runnable<\/code> ve <code class=\"language-\">Callable<\/code> gibi \u00f6nceden var olan fonksiyonel aray\u00fczleri incelemek.<br \/>\n* <strong>Ad\u0131m 3:<\/strong>  Basit bir fonksiyonel aray\u00fcz olu\u015fturmak ve lambda ifadeleriyle kullanmak.<\/p>\n<pre class=\"language-java\"><code>@FunctionalInterface\ninterface MyFunction {\n    int calculate(int a, int b);\n}\n\npublic class Main {\n    public static void main(String[] args) {\n        MyFunction add = (a, b) -&gt; a + b;\n        System.out.println(add.calculate(5, 3)); \/\/ \u00c7\u0131kt\u0131: 8\n    }\n}<\/code><\/pre>\n<p><strong>Orta:<\/strong><\/p>\n<p>* <strong>Ad\u0131m 1:<\/strong>  Ger\u00e7ek d\u00fcnya senaryolar\u0131nda fonksiyonel aray\u00fczleri kullanmak (\u00f6rne\u011fin, liste i\u015flemleri).<br \/>\n* <strong>Ad\u0131m 2:<\/strong>  <code class=\"language-\">Predicate<\/code>, <code class=\"language-\">Function<\/code>, <code class=\"language-\">Consumer<\/code>, <code class=\"language-\">Supplier<\/code> gibi temel fonksiyonel aray\u00fczleri detayl\u0131 incelemek.<br \/>\n* <strong>Ad\u0131m 3:<\/strong>  Method referanslar\u0131n\u0131 \u00f6\u011frenmek ve kullanmak.<\/p>\n<p><strong>\u0130leri D\u00fczey:<\/strong><\/p>\n<p>* <strong>Ad\u0131m 1:<\/strong>  Performans analizi yapmak ve farkl\u0131 fonksiyonel aray\u00fcz kullan\u0131m senaryolar\u0131n\u0131n performans\u0131n\u0131 kar\u015f\u0131la\u015ft\u0131rmak.<br \/>\n* <strong>Ad\u0131m 2:<\/strong>  Edge case&#8217;leri (k\u00f6\u015fe durumlar\u0131) ele almak ve olas\u0131 hatalar\u0131 \u00f6nlemek.<br \/>\n* <strong>Ad\u0131m 3:<\/strong>  Paralel ak\u0131\u015flar (parallel streams) ile performans optimizasyonu yapmak.<\/p>\n<p><strong>Temel Fonksiyonel Aray\u00fczler: Predicate, Function, Consumer, Supplier<\/strong><\/p>\n<p>Java 8, s\u0131k kullan\u0131lan fonksiyonel aray\u00fczleri <code class=\"language-\">java.util.function<\/code> paketi alt\u0131nda sa\u011flar. Bunlardan en \u00f6nemlileri:<\/p>\n<p>* <strong><code class=\"language-\">Predicate<T><\/code>:<\/strong>  Bir <code class=\"language-\">T<\/code> t\u00fcr\u00fcndeki girdiyi al\u0131r ve boolean bir de\u011fer d\u00f6nd\u00fcr\u00fcr.  \u00d6rne\u011fin, bir say\u0131n\u0131n \u00e7ift olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in kullan\u0131labilir.<\/p>\n<p>* <strong><code class=\"language-\">Function<T, R><\/code>:<\/strong> Bir <code class=\"language-\">T<\/code> t\u00fcr\u00fcndeki girdiyi al\u0131r ve <code class=\"language-\">R<\/code> t\u00fcr\u00fcnde bir sonu\u00e7 d\u00f6nd\u00fcr\u00fcr. \u00d6rne\u011fin, bir say\u0131n\u0131n karesini hesaplamak i\u00e7in kullan\u0131labilir.<\/p>\n<p>* <strong><code class=\"language-\">Consumer<T><\/code>:<\/strong> Bir <code class=\"language-\">T<\/code> t\u00fcr\u00fcndeki girdiyi al\u0131r ve bir sonu\u00e7 d\u00f6nd\u00fcrmez.  \u00d6rne\u011fin, bir say\u0131y\u0131 ekrana yazd\u0131rmak i\u00e7in kullan\u0131labilir.<\/p>\n<p>* <strong><code class=\"language-\">Supplier<T><\/code>:<\/strong>  Bir <code class=\"language-\">T<\/code> t\u00fcr\u00fcnde bir de\u011fer d\u00f6nd\u00fcr\u00fcr ve herhangi bir girdi almaz. \u00d6rne\u011fin, rastgele bir say\u0131 \u00fcretmek i\u00e7in kullan\u0131labilir.<\/p>\n<p><strong>Lambda \u0130fadeleri ve Method Referanslar\u0131 ile Fonksiyonel Aray\u00fczleri Kullanma<\/strong><\/p>\n<p>Lambda ifadeleri, fonksiyonel aray\u00fczlerin \u00f6rneklerini olu\u015fturman\u0131n k\u0131sa ve \u00f6z bir yoludur.  Method referanslar\u0131 ise mevcut metotlar\u0131 do\u011frudan fonksiyonel aray\u00fczlere atamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre class=\"language-java\"><code>List&lt;Integer&gt; numbers = Arrays.asList(1, 2, 3, 4, 5, 6);\n\n\/\/ Lambda ifadesi kullanarak \u00e7ift say\u0131lar\u0131 filtreleme\nList&lt;Integer&gt; evenNumbers = numbers.stream().filter(n -&gt; n % 2 == 0).collect(Collectors.toList());\n\n\/\/ Method referans\u0131 kullanarak say\u0131lar\u0131 kare alma\nList&lt;Integer&gt; squaredNumbers = numbers.stream().map(Math::pow).map(Double::intValue).collect(Collectors.toList());<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code class=\"language-\">filter<\/code> metodu bir <code class=\"language-\">Predicate<\/code> al\u0131rken, <code class=\"language-\">map<\/code> metodu bir <code class=\"language-\">Function<\/code> almaktad\u0131r.<\/p>\n<p><strong>Ger\u00e7ek D\u00fcnya Senaryolar\u0131: Vaka Analizleri<\/strong><\/p>\n<p><strong>Vaka 1:  \u00dcr\u00fcn Filtreleme:<\/strong> Bir e-ticaret uygulamas\u0131nda, kullan\u0131c\u0131lar\u0131n belirli kriterlere g\u00f6re \u00fcr\u00fcn filtrelemesi yapmas\u0131 gerekebilir.  Fonksiyonel aray\u00fczler, bu i\u015flemi olduk\u00e7a temiz bir \u015fekilde ger\u00e7ekle\u015ftirmemizi sa\u011flar.<\/p>\n<pre class=\"language-java\"><code>\/\/ \u00dcr\u00fcn s\u0131n\u0131f\u0131\nclass Product {\n    String name;\n    double price;\n    String category;\n\n    \/\/ ... constructor ve getter\/setter metotlar\u0131 ...\n}\n\n\/\/ Fiyat aral\u0131\u011f\u0131na g\u00f6re \u00fcr\u00fcn filtreleme\nPredicate&lt;Product&gt; isWithinPriceRange = p -&gt; p.getPrice() &gt;= 100 &amp;&amp; p.getPrice() &lt;= 200;\n\nList&lt;Product&gt; filteredProducts = products.stream().filter(isWithinPriceRange).collect(Collectors.toList());<\/code><\/pre>\n<p><strong>Vaka 2:  Veri \u0130\u015fleme:<\/strong>  Bir b\u00fcy\u00fck veri k\u00fcmesinde, her bir veri noktas\u0131na bir i\u015flem uygulamak gerekebilir.  <code class=\"language-\">Consumer<\/code> aray\u00fcz\u00fc bu i\u015flem i\u00e7in idealdir.<\/p>\n<pre class=\"language-java\"><code>\/\/ Her bir veri noktas\u0131n\u0131 g\u00fcnl\u00fc\u011fe kaydetme\nConsumer&lt;DataPoint&gt; logData = data -&gt; System.out.println(&quot;Data point: &quot; + data);\n\ndataPoints.forEach(logData);<\/code><\/pre>\n<p><strong>Performans Optimizasyonu: Paralel Ak\u0131\u015flar<\/strong><\/p>\n<p>Java 8&#8217;in getirdi\u011fi paralel ak\u0131\u015flar (parallel streams), performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.  Paralel ak\u0131\u015flar, veri i\u015fleme i\u015flemlerini birden fazla \u00e7ekirde\u011fe da\u011f\u0131tarak e\u015f zamanl\u0131 olarak y\u00fcr\u00fct\u00fcr.  Ancak, paralel ak\u0131\u015flar\u0131n her zaman performans art\u0131\u015f\u0131 sa\u011flamad\u0131\u011f\u0131n\u0131 unutmamak \u00f6nemlidir.  K\u00fc\u00e7\u00fck veri k\u00fcmeleri i\u00e7in paralel ak\u0131\u015flar, ek y\u00fck nedeniyle performans\u0131 d\u00fc\u015f\u00fcrebilir.  <code class=\"language-\">parallelStream()<\/code> metodu kullanarak s\u0131radan bir ak\u0131\u015f\u0131 paralel ak\u0131\u015fa d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz.<\/p>\n<pre class=\"language-java\"><code>List&lt;Integer&gt; numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n\n\/\/ S\u0131ral\u0131 ak\u0131\u015f\nlong startTime = System.currentTimeMillis();\nlong sum = numbers.stream().map(n -&gt; n * n).reduce(0, Integer::sum);\nlong endTime = System.currentTimeMillis();\nSystem.out.println(&quot;S\u0131ral\u0131 ak\u0131\u015f s\u00fcresi: &quot; + (endTime - startTime) + &quot; ms&quot;);\n\n\n\/\/ Paralel ak\u0131\u015f\nstartTime = System.currentTimeMillis();\nsum = numbers.parallelStream().map(n -&gt; n * n).reduce(0, Integer::sum);\nendTime = System.currentTimeMillis();\nSystem.out.println(&quot;Paralel ak\u0131\u015f s\u00fcresi: &quot; + (endTime - startTime) + &quot; ms&quot;);<\/code><\/pre>\n<p>Bu \u00f6rnekte, b\u00fcy\u00fck veri k\u00fcmeleri i\u00e7in paralel ak\u0131\u015f\u0131n daha h\u0131zl\u0131 oldu\u011funu g\u00f6receksiniz.  Ancak, k\u00fc\u00e7\u00fck veri k\u00fcmeleri i\u00e7in performans fark\u0131 ihmal edilebilir d\u00fczeyde olabilir hatta daha yava\u015f sonu\u00e7lar bile elde edilebilir.<\/p>\n<p><strong>Fonksiyonel Aray\u00fczlerin Avantajlar\u0131 ve Dezavantajlar\u0131<\/strong><\/p>\n<p><strong>Avantajlar:<\/strong><\/p>\n<p>* Kod okunabilirli\u011fini ve s\u00fcrd\u00fcr\u00fclebilirli\u011fini art\u0131r\u0131r.<br \/>\n* Kodun daha mod\u00fcler ve yeniden kullan\u0131labilir olmas\u0131n\u0131 sa\u011flar.<br \/>\n* Lambda ifadeleri ve method referanslar\u0131 sayesinde daha \u00f6zl\u00fc kod yaz\u0131lmas\u0131n\u0131 sa\u011flar.<br \/>\n* Paralel ak\u0131\u015flar ile performans optimizasyonu sa\u011flar.<\/p>\n<p><strong>Dezavantajlar:<\/strong><\/p>\n<p>* Karma\u015f\u0131kl\u0131k ekleyebilir, \u00f6zellikle b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalarda.<br \/>\n* Yan etkiler (side effects) kontrol\u00fcn\u00fcn zorla\u015fmas\u0131na neden olabilir.<br \/>\n* Debug i\u015flemini zorla\u015ft\u0131rabilir.<\/p>\n<p><strong>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/strong><\/p>\n<p>1. <strong>Fonksiyonel aray\u00fczler ne zaman kullan\u0131lmal\u0131d\u0131r?<\/strong>  Fonksiyonel aray\u00fczler, kodun daha okunabilir ve s\u00fcrd\u00fcr\u00fclebilir olmas\u0131n\u0131 istedi\u011finiz, lambda ifadeleri ve method referanslar\u0131 ile daha \u00f6zl\u00fc kod yazmak istedi\u011finiz ve paralel ak\u0131\u015flardan faydalanmak istedi\u011finiz durumlarda kullan\u0131lmal\u0131d\u0131r.<\/p>\n<p>2. <strong><code class=\"language-\">@FunctionalInterface<\/code> anotasyonu zorunlu mudur?<\/strong> Hay\u0131r, zorunlu de\u011fildir.  Ancak, kodun daha okunabilir ve anla\u015f\u0131l\u0131r olmas\u0131n\u0131 sa\u011flar ve derleyicinin fonksiyonel aray\u00fcz\u00fc do\u011fru bir \u015fekilde kontrol etmesine yard\u0131mc\u0131 olur.<\/p>\n<p>3. <strong>Fonksiyonel aray\u00fczler ve anonim i\u00e7 s\u0131n\u0131flar aras\u0131ndaki fark nedir?<\/strong>  Fonksiyonel aray\u00fczler, lambda ifadeleri ve method referanslar\u0131 ile daha \u00f6zl\u00fc ve okunabilir bir kod yaz\u0131lmas\u0131n\u0131 sa\u011flar.  Anonim i\u00e7 s\u0131n\u0131flar ise daha fazla kod gerektirir ve daha az okunabilir olabilir.<\/p>\n<p>4. <strong>Paralel ak\u0131\u015flar her zaman performans art\u0131\u015f\u0131 sa\u011flar m\u0131?<\/strong> Hay\u0131r, k\u00fc\u00e7\u00fck veri k\u00fcmeleri i\u00e7in paralel ak\u0131\u015flar performans\u0131 d\u00fc\u015f\u00fcrebilir.  Paralel ak\u0131\u015flar\u0131n performans art\u0131\u015f\u0131 sa\u011flamas\u0131 i\u00e7in veri k\u00fcmesinin yeterince b\u00fcy\u00fck olmas\u0131 gerekir.<\/p>\n<p>5. <strong>Fonksiyonel aray\u00fczleri \u00f6\u011frenmek i\u00e7in nereden ba\u015flayabilirim?<\/strong>  [Fatih Soysal&#8217;\u0131n](https:\/\/fatihsoysal.com) blogunda Java ile ilgili daha fazla makale bulabilirsiniz.<\/p>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"# Java 8 Fonksiyonel Aray\u00fczler: Uzman Rehberi Java 8&#8217;in getirdi\u011fi en \u00f6nemli yeniliklerden biri \u015f\u00fcphesiz fonksiyonel programlama deste\u011fidir.&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1408],"tags":[],"class_list":{"0":"post-29940","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-java","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java 8 Fonksiyonel Arabirimler<\/title>\n<meta name=\"description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java 8 Fonksiyonel Arabirimler\" \/>\n<meta property=\"og:description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-21T20:40:21+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Java 8 Fonksiyonel Arabirimler\",\"datePublished\":\"2025-09-21T20:40:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/\"},\"wordCount\":988,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Java\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/\",\"name\":\"Java 8 Fonksiyonel Arabirimler\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-09-21T20:40:21+00:00\",\"description\":\"Hi\u00e7bir etiketi bulunamad\u0131.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java 8 Fonksiyonel Arabirimler\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java 8 Fonksiyonel Arabirimler","description":"Hi\u00e7bir etiketi bulunamad\u0131.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/","og_locale":"tr_TR","og_type":"article","og_title":"Java 8 Fonksiyonel Arabirimler","og_description":"Hi\u00e7bir etiketi bulunamad\u0131.","og_url":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-09-21T20:40:21+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"6 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Java 8 Fonksiyonel Arabirimler","datePublished":"2025-09-21T20:40:21+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/"},"wordCount":988,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Java"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/","url":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/","name":"Java 8 Fonksiyonel Arabirimler","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-09-21T20:40:21+00:00","description":"Hi\u00e7bir etiketi bulunamad\u0131.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/java-8-fonksiyonel-arabirimler\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Java 8 Fonksiyonel Arabirimler"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/29940","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=29940"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/29940\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=29940"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=29940"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=29940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}