2015-06-09 9 views
19

* (int b int a) yürürlüğe koydu? Neden + işlecini kullanmak yerine bu yöntemi çağırmalıyım? Aklıma gelen tek olasılık, örneğin dizeleri karıştırma ve ne zamanNeden Java 8 * Integer.sum Sadece JDK8 <code>Integer</code> sınıf için bu yöntemi tanıtıldı fark

System.out.println("1"+2+3); // prints 123 
System.out.println("1"+Integer.sum(2,3)); // prints 15 

yüzden, + operatör değiştiren anlam IntS ama parantez kullanılarak O kadar faydalı olabileceğine zaten

System.out.println("1"+(2+3)); // prints 15 

cevap

32

çalışacak, yani İlgili bir fonksiyonel arayüz (IntBinaryOperator) gerektiren bir yönteme aktarılan bir yöntem referansı (Integer::sum). Örneğin

: Elbette

int sum = IntStream.range(1,500).reduce(0,Integer::sum); 

, bu örnek .sum() kullanmak yerine azaltabilir. Sadece IntStream.sum için Javadoc'un bu tam azalmayı sum() ile eşdeğer olarak ifade ettiğini fark ettim.

+0

Uhm ... bu muhtemelen çalışmadığım bir şey. –

+0

Aynı. Bunun kullanımını hiç görmedim. –

+0

Çok daha ilginç olan soru şu: 'fark', 'ürün' ve 'bölüm' ne olacak? (Belki de bunun için yeterli "açık" kullanım durumları değil. Ancak, "Tamsayı :: toplamı" veya "(a, b) -> (a + b)' yi kullanıp kullanmadığı çok da önemli değil ...) – Marco13