«java8» etiketlenmiş sorular

Java 8, Java platformunun en yeni sürümünü ifade eder.

10
Geleneksel boş işaretçi denetimleri yerine neden Java 8+ sürümünde İsteğe Bağlı kullanılır?
Geçenlerde Java 8'e geçtik. Şimdi, Optionalnesnelerle dolu uygulamaları görüyorum . Java 8'den Önce (Stil 1) Employee employee = employeeServive.getEmployee(); if(employee!=null){ System.out.println(employee.getId()); } Java 8'den Sonra (Stil 2) Optional<Employee> employeeOptional = Optional.ofNullable(employeeService.getEmployee()); if(employeeOptional.isPresent()){ Employee employee = employeeOptional.get(); System.out.println(employee.getId()); } Optional<Employee> employeeOptional = employeeService.getEmployee();Hizmetin kendisinin isteğe bağlı olarak döndüğü zaman hiçbir katma …
110 java  java8 

5
Zaten soyut sınıflarımız varken neden Java 8'deki arayüzlere varsayılan ve statik yöntemler eklendi?
Java 8'de, arabirimler uygulanmış yöntemler, statik yöntemler ve "varsayılan" yöntemler (uygulama sınıflarının geçersiz kılması gerekmeyen) içerebilir. Benim (muhtemelen saf) görüşüme göre, bu gibi arayüzleri ihlal etmeye gerek yoktu. Arayüzler her zaman yapmanız gereken bir sözleşme olmuştur ve bu çok basit ve saf bir konsepttir. Şimdi birkaç şeyin karışımı. Bence: statik …


3
Java 8 java.time sınıfları neden getMillis () yöntemini kullanmıyor?
Java 8, java.time paketindeki tarihler ve saatler için tamamen yeni bir kütüphaneye sahiptir; bu, JodaTime'ı daha önce kullanmak zorunda kalan veya kendi tarih işleme yardımcı yöntemlerini kullanmakta güçlük çeken herkese çok açık bir şeydir. Bu paketteki birçok sınıf, zaman damgalarını temsil eder ve zaman damgasından getHour()saat almak, zaman damgasından getMinute()dakika …
64 java  java8 

3
Java 8'de lambda sözdizimi yerine yöntem başvuru sözdizimini kullanmanın bir performans avantajı var mı?
Yöntem referansları lambda sargısının üst kısmını atlıyor mu? Gelecekte olabilirler mi? Java Eğitim Kılavuzuna göre, Referanslar : Bazen ... bir lambda ifadesi var olan yöntemi çağırmaktan başka bir şey yapmaz. Bu gibi durumlarda, mevcut yönteme ada göre başvurmak genellikle daha açıktır. Yöntem başvuruları bunu yapmanızı sağlar; Zaten bir adı olan …

6
Java tarafından kontrol edilen istisnalar için geçici çözüm
Java 8'in lambdalar ve varsayılan yöntemler arabirimleriyle ilgili özelliklerini çok takdir ediyorum. Yine de, kontrol edilen istisnalar dışında hala sıkıldım. Örneğin, bir nesnenin tüm görünür alanlarını listelemek istersem, şunu yazmak istiyorum: Arrays.asList(p.getClass().getFields()).forEach( f -> System.out.println(f.get(p)) ); Bununla birlikte, getyöntem, Consumerarayüz sözleşmesini kabul etmeyen, işaretli bir istisna atabildiğinden , bu istisnayı …

3
Neden for döngüsü yerine “fonksiyonel işlemler” kullanmalıyım?
for (Canvas canvas : list) { } NetBeans, "işlevsel işlemleri" kullanmamı önerir: list.stream().forEach((canvas) -> { }); Fakat bu neden tercih edilir ? Bir şey olursa, okumak ve anlamak daha zordur. Daha stream()sonra forEach()parametre ile bir lambda ifadesi kullanarak çağırıyorsunuz canvas. Bunun forilk pasajdaki döngüden daha iyi olduğunu nasıl göremiyorum . …

3
Bir stream öğesini değiştirmek için peek () kullanmak bir antipattern mı?
Diyelim ki bir şeyler akışım var ve onları orta akışta "zenginleştirmek" istiyorum, bunu peek()yapmak için kullanabilirim , örneğin: streamOfThings.peek(this::thingMutator).forEach(this::someConsumer); Şeylerin kodda bu noktada mutasyona tabi tutulmasının doğru bir davranış olduğunu varsayalım - örneğin, thingMutatoryöntem "lastProcessed" alanını şimdiki zamana ayarlayabilir. Ancak, peek()çoğu bağlamda "bak, ama dokunma" anlamına gelir. Kullanarak mı peek()hiç …

1
Java 8'de çıkarım yazın
Java 8'deki yeni lambda gösteriminin tanıtılması (örneğin bu makaleye bakınız ) bir tür çıkarım gerektiriyor mu? Öyleyse, yeni tür sistemi Java dilini bir bütün olarak nasıl etkiler?


3
Neden Optional.get () isPresent () 'ı çağırmadan kötü, ama iterator.next ()' dir?
Bir koleksiyondaki belirli bir öğeyi bulmak için yeni Java8 akışlarını api kullanırken, şöyle kod yazarım: String theFirstString = myCollection.stream() .findFirst() .get(); Burada IntelliJ, önce isPresent () öğesini kontrol etmeden get () işlevinin çağrıldığını uyarır. Ancak bu kod: String theFirstString = myCollection.iterator().next(); ... uyarı vermez. İki teknik arasında, akış yaklaşımını bir …
23 java8 

1
Java 8 kodu için koşullu kapsamı ölçmek anlamlı mı?
Java 8 için geçerli araçlarla koşullu kod kapsamının ölçülmesinin geçersiz olup olmadığını merak ediyorum. Java 8'lerle Optionalve Streamçoğu zaman kod dallarından / döngülerden kaçınabiliriz, bu da tüm olası yürütme yollarını test etmeden çok yüksek koşullu kapsama alanı almayı kolaylaştırır. Eski Java kodunu Java 8 koduyla karşılaştıralım: Java 8'den önce: public …

3
Akışları normalde Koleksiyonlar döndüreceğimiz yere döndürmek akılcı bir şey mi?
Herhangi bir eski koda bağlı olmayan API'mı geliştirirken, genellikle sonuçları toplayarak tamamen Streams pipeline olan sonlandırılmış yöntemler yazıyorum. Bunun gibi: ImmutableSet<T> deriveSomethingMeaningfulFromPrivateState() { return myPrivateThingies.stream() .map(this::ownerOfThing) .map(Owner::socialStatus) .filter(SocialStatus::isHeAFineMatey) .collect(MyCustomCollectors.toImmutableSet()); } Şimdi, bu sınıftaki müşterilerin çoğu genellikle öğeleri aramak ve yinelemek için Koleksiyona (bu durumda bir ImmutableSet) ihtiyaç duyacaktır, ancak bazı …

1
Scala işlevinin Java 8 yöntemine geçirilmesi
Aşağıdaki Scala kodu çalışır ve bir işlev bekleyen bir Java yöntemine geçirilebilir. Bunu yapmanın daha temiz bir yolu var mı? İşte ilk geçişim: val plusOne = new java.util.function.Function[Int,Int] { override def apply(t:Int):Int = t + 1 override def andThen[V](after:function.Function[_ >: Int, _ <: V]): function.Function[Int, V] = ??? override def …

1
Collection.stream (). Filter (). ForEach () her döngü için bir standarda göre etkisiz mi?
IntelliJ IDEA, şu an için her for döngüsü için bir Java 8 "forEach" çağrısı ile değiştirmemi önerdi: for (Object o : objects) { if (o instanceof SomeObject) { doSomething(); } } Önerilen çağrı şöyle: objects.stream().filter(o -> o instanceof SomeObject).forEach(o -> doSomething()); Stream'in temel işlevlerinin nasıl çalıştığını yanlış anlamadığım sürece, bana …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.