Java'da Tüketici Arayüzü Nasıl Kullanılır?

Java Da Tuketici Arayuzu Nasil Kullanilir



Java'da “ Tüketici ” arabirimi, tek bir girdi alan ve sonuç döndürmeden üzerinde bazı eylemler gerçekleştiren bir işlemi temsil eder. Ayrıca, lambda ifadeleri gibi işlevsel programlamada kullanılabilecek özel işlemleri tanımlamanın esnek bir yolunu sunar. Bu blog, Java'da bir Tüketici arabiriminin uygulanmasını göstermektedir.

Java'da Tüketici Arayüzü Nasıl Kullanılır?

Tüketici ” arabirimi, programın farklı konumlarında aktarılabilen ve yürütülebilen kapsülleme veya davranış sunar. Kodu çoğaltmadan farklı girdilere uygulanabilen yeniden kullanılabilir davranışı destekler. Tüketici arayüzü, “ ve daha sonra() ' Ve ' kabul etmek() ”.







Codec örnekleriyle birlikte her iki işlevi de anlamak için aşağıdaki örnekleri ziyaret edin:



Örnek 1: “andThen()” Yönteminin Kullanımı



Geliştirici birden çok ' zincirleme yapabilir ' Tüketici ' işlemlerini tamamen kullanarak ' ve daha sonra() ' yöntem. Yeni bir 'döndürür' Tüketici akımın çalışmasını gerçekleştiren “ Tüketici ' misal. Bundan sonraki “gelecek/sonrası” işlemlerini yerine getirir. Tüketici ' misal. “ işlemi için yaygın olarak kullanılan varsayılan yöntemdir. Kompozisyon ”.





“ için sözdizimi ve daha sonra() ” yöntemi aşağıya eklenir:

ve daha sonra ( Tüketici < ? süper T > sonrasında )



ve daha sonra() ” yöntem mevcut tüketiciyi birleştirir” Süper ” başka bir tüketici ile “ sonrasında ”. Ve önce mevcut tüketicinin işlemini, ardından sağlanan tüketicinin işlemini gerçekleştirir.

Daha iyi anlamak için bir programı inceleyelim:

java.util.ArrayList'i içe aktarın;
java.util.LinkedList'i içe aktarın;
java.util.List'i içe aktarın;
java.util.function.Consumer'ı içe aktarın;

genel sınıf Kökü {
genel statik geçersiz ana ( Dize bağımsız değişkenleri [ ] )
{
// ana yöntemin oluşturulması
Tüketici < Liste < tamsayı > > çarp = dataEle - >
{
için ( int j = 0 ; J < dataEle.size ( ) ; j++ ) {
dataEle.set ( J, 5 * dataEle.get ( J ) ) ;
}
} ;
// Tam sayıların bir listesini görüntülemek için tüketici
Tüketici < Liste < tamsayı > >
yazdırır = dataEle - > dataEle.stream ( ) .her biri için ( k - > System.out.print ( k + ' ' ) ) ;

Liste < tamsayı > dataEle = yeni ArrayList < tamsayı > ( ) ;
veriEle.add ( 4 ) ;
veriEle.add ( 7 ) ;
veriEle.add ( 12 ) ;
veriEle.add ( 16 ) ;
çarp.veSonra ( baskılar ) .kabul etmek ( veriEle ) ;
}
}

Yukarıdaki kodun açıklaması:

  • İlk önce ' Tüketici ”, “ Bağlantılı liste ” ve ilgili yardımcı programlar Java dosyasına aktarılır. Bundan sonra “ isimli ana sınıf Kök ' yaratıldı.
  • Ardından, “Tüketici” adında Liste türünde bir arayüz oluşturun. çarpmak ” ve “ ile eşit olarak ayarlayın Dizi Listesi ” aşağıda oluşturulacak.
  • Bir “kullanır için ” uzunluğuna kadar yinelenen döngü Dizi Listesi ”adlı” veriEle ”ve“ öğesinin her bir veri öğesini çarpar. veriEle ' ile ' 5 ”.
  • Ondan sonra bir saniye ' Tüketici Bir akıştan çoğaltma işleminden sonra alınan konsoldaki her bir öğeyi yazdıran ” arabirimi oluşturulur.
  • Şimdi, “ içinde yapay veri öğeleri oluşturun ve ekleyin. veriEle ” Dizi Listesi.
  • Sonunda, “ ve daha sonra() ” metodu “ ile çağrılır. kabul etmek() ' kabul eden yöntem ' veriEle ” ArrayList ve “ sonucunu döndürür çarpmak ' sırayla.

Yürütme aşamasının bitiminden sonra:

Anlık görüntü, çarpma görevinin “ kullanılarak tamamlandığını gösterir. ve daha sonra() ' yöntemi' Tüketici ' arayüz.

Örnek 2: “accept()” Yönteminin Kullanımı

kabul etmek() ” yöntemi, “ işlevinin işlevsel bir yöntemidir. Tüketici ' arayüz. ' türünde tek bir bağımsız değişkeni kabul eder. T ” der ve üzerinde belirtilen/gerekli işlemleri gerçekleştirir. Değeri ' Hükümsüz “kabul etmediği için kendisine verilmemelidir” Hükümsüz ” değerleri ve bir istisna oluşturur.

Sözdizimi aşağıda verilmiştir:

geçersiz kabul ( < güçlü > T güçlü > T )

Yukarıdaki sözdiziminde, “ T ”, belirli işlemlerin çalıştırıldığı tek argümandır.

Daha iyi anlamak için aşağıdaki kod bloğunu ziyaret edelim:

java.util.ArrayList'i içe aktarın;
java.util.LinkedList'i içe aktarın;
java.util.List'i içe aktarın;
java.util.function.Consumer'ı içe aktarın;

// yardımcı programları ithal etmek içinde java dosya
genel sınıf Kökü {
genel statik geçersiz ana ( Dize bağımsız değişkenleri [ ] ) // ana yöntemin oluşturulması
{
Tüketici < tamsayı > ekran = k - > System.out.println ( k ) ;
disp.kabul et ( 255 ) ;
Tüketici < Liste < tamsayı > > çarp = dataEle - >
{
için ( int k = 0 ; k < dataEle.size ( ) ; k++ )
dataEle.set ( k, 5 * dataEle.get ( k ) ) ;
} ;

Tüketici < Liste < tamsayı > >
yazdırır = dataEle - > dataEle.stream ( ) .her biri için ( J - > System.out.print ( j + '
'
) ) ;
Liste < tamsayı > dataEle = yeni ArrayList < tamsayı > ( ) ;
veriEle.add ( 4 ) ;
veriEle.add ( 7 ) ;
veriEle.add ( 12 ) ;
veriEle.add ( 16 ) ;
// Kabul et kullanarak değişiklik uygula ( )
çarp.kabul et ( veriEle ) ;
// accept kullanarak dispList'i uygulayın ( )
yazdırır.kabul et ( veriEle ) ;
}
}

Yukarıdaki kodun açıklaması:

  • İlk önce ' Tüketici 'adlı arayüz' disp ” herhangi bir işlem yapmadan konsolda sağlanan parametreleri görüntüleyen oluşturulur.
  • Şimdi ' kabul etmek() ' yöntemi ' tarafından çağrılır disp “Tüketici ve” değeri 255 ” bu metoda geçilir.
  • Ardından başka bir “ Tüketici kullanan “arayüz oluşturulur” için ” adlı ArrayList'in her yerleşik öğesine çarpma uygulamak için döngü ” veriEle ”.
  • Ondan sonra bir tane daha oluştur” Tüketici görüntülemek için arayüz veriEle ” öğeleri, akıştan gelen çarpma uygulandıktan sonra ortaya çıkar.
  • Ardından, ArrayList'i başlatın ' veriEle ” kukla veri öğeleriyle ve “ kabul etmek() ” yöntemi ile “ çarpmak ' arayüz.
  • Sonunda, “ kabul etmek() ' yöntemini kullanan ' baskılar Konsol günlüğünde çarpma uygulandıktan sonra sonucu görüntülemek için ” arayüzü.

Yürütme sona erdikten sonra:

Yukarıdaki anlık görüntü, birden çok tüketici arayüzünün ' kabul etmek() ' yöntem.

Örnek 3: After İşlevi için İstisna İşleme

İstisna, “ sonrasında 'işlevi' ve daha sonra() ” yöntemi bir “ içerir kabul etmek() ' yöntem. Bu, aşağıda gösterildiği gibi Tüketici arayüzü yöntemlerini kullanan arayüzler tarafından işlenecek verileri tutan bir arayüz oluşturur:

java.util.ArrayList'i içe aktarın;
java.util.LinkedList'i içe aktarın;
java.util.List'i içe aktarın;
java.util.function.Consumer'ı içe aktarın;

genel sınıf Kökü {
genel statik geçersiz ana ( Dize bağımsız değişkenleri [ ] )
{
Tüketici < Liste < tamsayı > > çarpmak = veriEle - >
{
için ( int j = 0 ; J < = veriEle.size ( ) ; j++ )
dataEle.set ( J, 5 * dataEle.get ( J ) ) ;
} ;
// Tam sayıların bir listesini görüntülemek için tüketici
Tüketici < Liste < tamsayı > >
Yazdır = veriEle - > dataEle.stream ( ) .her biri için ( Ben - > System.out.print ( ben + ' ' ) ) ;
Liste < tamsayı > dataEle = yeni ArrayList < tamsayı > ( ) ;
veriEle.add ( 4 ) ;
veriEle.add ( 7 ) ;
veriEle.add ( 12 ) ;
veriEle.add ( 16 ) ;
denemek {
yazdır.veSonra ( çarpmak ) .kabul etmek ( veriEle ) ;
}
yakalamak ( İstisna e ) {
System.out.println ( 'İstisna: ' + ve ) ;
}
}
}

Yukarıdaki kod bloğunun açıklaması:

  • İlk önce ' Tüketici ” arayüz, basitçe birden çok “ 5 ” sağlanan ArrayList'te bulunan veri öğeleriyle tamsayılar.
  • Ardından, ikinci ' Tüketici Akış tarafından alınan ArrayList'in her bir veri öğesini görüntülemek için ” arabirimi oluşturulur.
  • Bundan sonra, ArrayList oluşturulur ve sahte tamsayı tipi değerlerle başlatılır.
  • Sonra ' denemek ” bloğu, “ ve daha sonra() ' yöntemi ' tarafından çağrılır Yazdır ' arayüz.
  • neden olur” IndexOutOfBoundsİstisna ' Çünkü ' için ' döngü yineleme sınırı aşıldı ve ' ile çözüldü yakalamak ' engellemek.

Yürütme aşamasının bitiminden sonra:

Anlık görüntü, IndexOutOfBoundsException'ın derleyici tarafından oluşturulduğunu gösterir.

Çözüm

Tüketici ” arabirimi, yeniden kullanılabilir davranışı tanımlamanın ve bir sonuç döndürmeden girdi verileri üzerinde eylemler gerçekleştirmenin bir yolunu sağlar. Bu oluşmaktadır ' kabul etmek() ' Ve ' ve daha sonra() ” yöntemleri. Genellikle, kullanıcıların bir koleksiyonun veya akışın her öğesi üzerinde bir eylem gerçekleştirmesi gereken veri işleme görevleri için kullanılır. Java'da Tüketici arabiriminin kullanımı ve uygulanmasıyla ilgili her şey budur.