Sonunda var ile Java'da Çıkarılan Tür yerel değişkenleri bildirebilirsiniz - işte bu harika

Herkese merhaba! Bu makalede, Java 10'un yeni özelliklerini tartışacağım . Özellikle, muhtemelen en popüler ve en kullanışlı olanından bahsedeceğim: Java'da var anahtar kelimesinin tanıtımı. Aslında bir anahtar kelime değil - ama size daha sonra anlatacağım.

Nihayet ...

Son olarak Java, yerel değişkenleri bildirmek için var anahtar sözcüğünü almıştır . Bu, bir değişkeni türü olmadan bildirmenize izin verir. Örneğin, bunu yapmak yerine:

String str = “Java”

şimdi şunu söyleyebilirsin:

var str = “Java”.

Bu, bir String veya bir int değişkeni bildirirken kazanılacak pek bir şey gibi görünmeyebilir, ancak örneğin jeneriklerle karmaşık türleri düşünün. Bu kesinlikle çok fazla yazma tasarrufu sağlayacak ve ayrıca kodun okunabilirliğini artıracaktır.

Biraz arka plan

Java geliştiricileri uzun süredir standart koddan ve kod yazarken yapılan törenlerden şikayet ediyorlar. Python, Groovy veya JavaScript gibi dillerde sadece 5 dakika süren pek çok şey, Java'da ayrıntılı olması nedeniyle 30 dakikadan fazla sürebilir.

Scala, Kotlin, Go, C # veya başka bir JVM dilinde kodladıysanız, hepsinin zaten dilde yerleşik bir tür yerel değişken türü çıkarımına sahip olduğunu bilirsiniz.

Örneğin, JavaScript let ve var , Scala ve Kotlin var ve val , C ++ auto , C # var ve Go bunu : = operatörüyle bildirerek destekler .

Java 10'a kadar, Java, yerel değişken türü çıkarımına sahip olmayan veya var anahtar sözcüğünü desteklemeyen tek dildi.

Lambda ifadesinin, yöntem referanslarının ve Akışların tanıtılmasıyla Java 8'de tür çıkarımı çok iyileştirilmiş olsa da, yerel değişkenlerin yine de uygun türle bildirilmesi gerekiyordu. Ama o artık gitti! Java 10 bir özelliği vardır, JEP 286: Yerel-Değişken Tipi Çıkarım , tip bilgileri olmadan ve sadece var anahtar sözcüğünü kullanarak yerel değişkenleri bildirerek izin verecektir.

Hadi daha yakından bakalım.

Java 10 var anahtar kelime örnekleri

Java 10'un var anahtar sözcüğü için bazı örnekler:

var str = "Java 10"; // infers String 
var list = new ArrayList(); // infers ArrayList
var stream = list.stream(); // infers Stream

Dediğim gibi, bu noktada var'ın sizin için ne yaptığını tam olarak anlayamayabilirsiniz. Ancak bir sonraki örneğe bakın:

var list = List.of(1, 2.0, "3")

Burada liste , bir kesişim türü olan Liste t; .. >> olarak çıkarılacaktır , ancak tam tür bilgisini yazmanız gerekmeyecektir. var, bu durumda kodu yazmayı ve okumayı çok daha kolay hale getirir.

Sonraki bölümde, Java 10'da var kullanarak özlü kod yazmayı öğrenmenize yardımcı olacak birkaç örnek daha göreceğiz.

Java'da var anahtar sözcüğünü kullanarak kısa kod yazma

Var rezerv kelimesinin kullanılması, aynı zamanda, yinelemeyi azaltarak kodunuzu kısa hale getirir - örneğin, aşağıdaki örnekte gösterildiği gibi atamaların hem sağ hem de sol tarafında bulunan Sınıfın adı:

ByteArrayOutputStream bos = new ByteArrayOutputStream();

Burada ByteArrayOutputStream iki kez tekrar eder ve aşağıda gösterildiği gibi Java 10'un var özelliğini kullanarak bunu ortadan kaldırabiliriz:

var bos = new ByteArrayOutputStream();

Java'da kaynakla dene deyimlerini kullanırken benzer şeyler yapabiliriz, örneğin bu

try (Stream data = dbconn.executeQuery(sql)) { return data.map(...) .filter(...) .findAny(); }

şu şekilde yazılabilir:

try (var books = dbconn.executeQuery(query)) { return books.map(...) .filter(...) .findAny(); }

Bunlar sadece birkaç örnektir. Kodunuzu daha kısa ve okunaklı hale getirmek için var'ı kullanabileceğiniz birçok yer var, bunların birçoğu Sander's Pluarlsight kursunda What's New in Java 10 kursunda görebilirsiniz .

Ücretli bir kurstur ancak bu 10 günlük ücretsiz denemeye göz atabilirsiniz.

Groovy veya Scala kullanan programcılar için var'ın tanıtımı, Java'nın Scala yolunda gidiyor gibi görünmesini sağlar… ama bunu sadece zaman gösterecektir.

Şimdilik, var'ın Java 10'da karmaşık bir yerel değişken bildirmeyi kolaylaştırdığı için mutlu olabiliriz .

Ve unutmayın: Java 10 var anahtar kelimesinin yerel değişken türü çıkarımı, yalnızca yerel değişkenleri (örneğin, yöntem gövdesi veya kod bloğu içindeki herhangi bir değişken) bildirmek için kullanılabilir.

Java'da üye değişkenleri bildirmek için var kullanabilir misiniz?

Sen olamaz sınıf içinde üye değişkenleri, yöntem biçimsel parametreleri veya yöntemlerin dönüş türü ilan etmek var kullanmak.

Örneğin, bu var örneğinde sorun yok:

public void aMethod(){ var name = "Java 10"; } 

Ancak aşağıdaki örnek TAMAM DEĞİLDİR:

class aClass{ var list; // compile time error }

Dolayısıyla, bu yeni Java 10 özelliği göz alıcı ve iyi görünse de, daha önünde uzun bir yol var. Yine de, kodunuzu daha da basitleştirmek için kullanmaya başlayabilirsiniz. Daha az standart kod, her zaman daha iyi ve daha okunabilir kod anlamına gelir.

Bu yeni var anahtar kelimesi hakkında önemli noktalar

Artık Java 10'da türü bildirmeden yerel değişkenleri bildirebileceğinizi bildiğinize göre, üretim kodunuzda kullanmaya başlamadan önce bu özellik hakkında birkaç önemli şeyi öğrenmenin zamanı geldi:

1. Bu özellik JEP 286: Local-Variable Type Inference altında oluşturulmuştur ve Brian Goetz'den başkası tarafından yazılmamıştır. Java geliştiricileri için en popüler kitaplardan biri olan Java Concurrency in Practice'in yazarıdır.

2. var anahtar sözcüğü yerel değişken türü çıkarımına izin verir, bu da yerel değişkenin türünün derleyici tarafından çıkarılacağı anlamına gelir. Şimdi beyan etmenize gerek yok.

3. Yerel değişken türü çıkarımı veya Java 10 var anahtar sözcüğü yalnızca yerel değişkenleri bildirmek için kullanılabilir , örneğin yöntemlerin içinde, başlatıcı kod bloğunda, geliştirilmiş for döngüsündeki dizinler, lambda ifadeleri ve geleneksel bir for döngüsünde bildirilen yerel değişkenler .

Üye değişkenleri veya alanları bildirmek için, yapıcı biçimsel değişkenleri ve diğer herhangi bir tür değişken bildirimi üzerinde biçimsel değişkenleri bildirmek ve yöntem türlerini döndürmek için kullanamazsınız.

4. var'ın tanıtımına rağmen, Java hala statik olarak yazılmış bir dildir ve yerel değişkenin türünü anlamak için yeterli bilgi olmalıdır. Değilse, derleyici bir hata atar.

5. var anahtar sözcüğü, C ++ auto anahtar sözcüğüne, C # değişkenine, JavaScript, Scala, Kotlin'e, Groovy ve Python'a def (bir dereceye kadar) ve Go programlama dilinin: = işlecine benzer.

6. Bilinmesi gereken önemli bir nokta, var bir anahtar kelime gibi görünse de, aslında bir anahtar kelime olmadığıdır. Bunun yerine, ayrılmış bir tür adıdır. Bu, değişken, yöntem veya paket adı olarak var kullanan kodun etkilenmeyeceği anlamına gelir.

7. Unutulmaması gereken bir diğer husus, var sınıf veya arayüz adı olarak kullanan kodun bu Java 10 değişikliğinden etkileneceğidir. Ancak JEP'in dediği gibi, bu adlar, olağan adlandırma kurallarını ihlal ettikleri için pratikte nadirdir.

8. Yerel değişkenlerin veya son değişkenlerin değişmez eşdeğerleri val ve let henüz Java 10'da desteklenmemektedir.

Sarma

Hepsi Java 10'daki değişkenle ilgili ! Bu, yerel değişkenleri türlerini bildirmeden bildirmenize olanak tanıyan ilginç bir Java 10 özelliğidir. Bu aynı zamanda Java geliştiricilerinin Python, Scala veya Kotlin gibi diğer dilleri hızlı bir şekilde algılamasına yardımcı olacaktır, çünkü değişken değişkenleri bildirmek için var'ı ve değişmez yerel değişkenleri bildirmek için val'i yoğun bir şekilde kullanırlar.

Olsa Yerel-Değişken Tipi Çıkarım: JEP 286 sadece destekler Var değil val , hala yararlıdır ve daha Java Scala kodlama gibi hissediyor.

İleri Öğrenme

Sander Mak'tan Java 10'daki Yenilikler

Java'da Yerel Değişken Türü Çıkarımı için Stil Yönergeleri

JEP 286: Yerel Değişken Tip Çıkarımı

Java Geliştiricisinin 2018'de Öğrenmesi Gereken 10 Şey

Java'yı Daha İyi Öğrenmek için Tam Java MasterClass

Bu makaleyi okuduğunuz için teşekkürler. Bu yeni Java 10 özelliğini beğendiyseniz , lütfen arkadaşlarınız ve iş arkadaşlarınızla paylaşın.

Herhangi bir sorunuz veya geri bildiriminiz varsa, lütfen bir not bırakın ve buradan daha fazla Java 10 öğreticisi ve makalesi için bizi izlemeye devam edin.

İlk olarak 27 Mart 2018'de javarevisited.blogspot.com'da yayınlandı.