วิธีการใช้ส่วนต่อประสานผู้ใช้ใน Java?

Withi Kar Chi Swn Tx Prasan Phu Chi Ni Java



ใน Java, the “ ผู้บริโภค ” อินเทอร์เฟซแสดงถึงการดำเนินการที่ได้รับอินพุตเดียวและดำเนินการบางอย่างกับมันโดยไม่ส่งคืนผลลัพธ์ นอกจากนี้ยังมีวิธีที่ยืดหยุ่นในการกำหนดการดำเนินการแบบกำหนดเองซึ่งสามารถใช้ในการเขียนโปรแกรมการทำงาน เช่น นิพจน์แลมบ์ดา บล็อกนี้แสดงการใช้งานอินเทอร์เฟซสำหรับผู้บริโภคใน Java

จะใช้ส่วนต่อประสานกับผู้ใช้ใน Java ได้อย่างไร

ผู้บริโภค ” อินเทอร์เฟซเสนอการห่อหุ้มหรือพฤติกรรมที่สามารถส่งผ่านและดำเนินการในตำแหน่งต่างๆ ในโปรแกรม มันส่งเสริมพฤติกรรมที่ใช้ซ้ำได้ซึ่งสามารถนำไปใช้กับอินพุตที่แตกต่างกันโดยไม่ต้องใช้รหัสซ้ำ อินเทอร์เฟซสำหรับผู้บริโภคประกอบด้วยสองวิธี ได้แก่ “ แล้ว() ' และ ' ยอมรับ() '.







เยี่ยมชมตัวอย่างด้านล่างเพื่อทำความเข้าใจทั้งสองฟังก์ชันพร้อมกับตัวอย่างตัวแปลงสัญญาณ:



ตัวอย่างที่ 1: การใช้เมธอด “andthen()”



นักพัฒนาสามารถเชื่อมโยงหลาย ๆ “ ผู้บริโภค ” ดำเนินการพร้อมกันโดยใช้ “ แล้ว() ' วิธี. มันกลับมาใหม่ “ ผู้บริโภค ” ที่ทำการดำเนินการของปัจจุบัน “ ผู้บริโภค ' ตัวอย่าง. หลังจากนั้น ปฏิบัติตามการดำเนินงานของสิ่งที่จะเกิดขึ้น/หลังจากนั้น “ ผู้บริโภค ' ตัวอย่าง. เป็นวิธีเริ่มต้นที่ใช้กันอย่างแพร่หลายสำหรับกระบวนการของ “ องค์ประกอบ '.





ไวยากรณ์สำหรับ ' แล้ว() ” วิธีถูกแทรกด้านล่าง:

และจากนั้น ( ผู้บริโภค < ? ซุปเปอร์ ที > หลังจาก )



แล้ว() ” วิธีการรวมผู้บริโภคปัจจุบัน “ สุดยอด ” กับผู้บริโภครายอื่น “ หลังจาก '. และดำเนินการกับการดำเนินการของผู้บริโภคปัจจุบันก่อน ตามด้วยการดำเนินการของผู้บริโภคที่จัดเตรียมไว้

ให้เราเดินผ่านโปรแกรมเพื่อความเข้าใจที่ดีขึ้น:

นำเข้า java.util.ArrayList;
นำเข้า java.util.LinkedList;
นำเข้า java.util.List;
นำเข้า java.util.function.Consumer;

รูทคลาสสาธารณะ {
โมฆะสาธารณะคงหลัก ( อาร์กิวเมนต์สตริง [ ] )
{
// การสร้างวิธีการหลัก
ผู้บริโภค < รายการ < จำนวนเต็ม > > คูณ = dataEle - >
{
สำหรับ ( int j = 0 ; เจ < dataEle.size ( ) ; เจ++ ) {
dataEle.set ( เจ 5 * dataEle.get ( เจ ) ) ;
}
} ;
// ผู้บริโภคเพื่อแสดงรายการจำนวนเต็ม
ผู้บริโภค < รายการ < จำนวนเต็ม > >
พิมพ์ = dataEle - > dataEle.สตรีม ( ) .แต่ละ ( เค - > System.out.print ( k+ ' ' ) ) ;

รายการ < จำนวนเต็ม > dataEle = ArrayList ใหม่ < จำนวนเต็ม > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
คูณแล้ว ( พิมพ์ ) .ยอมรับ ( dataEle ) ;
}
}

คำอธิบายของรหัสด้านบน:

  • ประการแรก “ ผู้บริโภค ”, “ รายการที่เชื่อมโยง ” และโปรแกรมอรรถประโยชน์ที่เกี่ยวข้องจะถูกนำเข้าไปยังไฟล์ Java หลังจากนั้นคลาสหลักที่มีชื่อ“ ราก ” ถูกสร้างขึ้น
  • ถัดไป สร้างส่วนต่อประสาน 'ผู้บริโภค' ประเภทรายการชื่อ ' คูณ ” และกำหนดให้เท่ากับ “ รายการอาร์เรย์ ” ที่กำลังจะสร้างขึ้นด้านล่าง
  • มันใช้ a “ สำหรับ ” ลูปที่วนซ้ำจนถึงความยาวของ “ รายการอาร์เรย์ ” ชื่อว่า “ dataEle ” และคูณแต่ละองค์ประกอบข้อมูลของ “ dataEle ' กับ ' 5 '.
  • หลังจากนั้นวินาที” ผู้บริโภค ” อินเทอร์เฟซถูกสร้างขึ้นโดยพิมพ์แต่ละองค์ประกอบบนคอนโซลที่ดึงมาหลังจากกระบวนการคูณจากสตรีม
  • ตอนนี้ สร้างและเพิ่มองค์ประกอบข้อมูลจำลองใน ' dataEle ArrayList
  • ในที่สุด “ แล้ว() ” วิธีการถูกเรียกด้วย “ ยอมรับ() ” วิธีการที่ยอมรับ “ dataEle ” ArrayList และส่งคืนผลลัพธ์ของ “ คูณ ' ในลำดับ.

หลังจากสิ้นสุดขั้นตอนการดำเนินการ:

ภาพรวมแสดงให้เห็นว่างานคูณเสร็จสมบูรณ์โดยใช้ ' แล้ว() ” วิธีการของ “ ผู้บริโภค ' อินเตอร์เฟซ.

ตัวอย่างที่ 2: การใช้เมธอด “accept()”

ยอมรับ() ” วิธีการเป็นวิธีการทำงานของ “ ผู้บริโภค ' อินเตอร์เฟซ. ยอมรับอาร์กิวเมนต์ประเภท ' ” และดำเนินการตามที่ระบุ/จำเป็น คุณค่าของ ' โมฆะ ” ไม่ต้องจัดให้เพราะมันไม่รับ ” โมฆะ ” ค่าและสร้างข้อยกเว้น

ไวยากรณ์ของมันได้รับด้านล่าง:

เป็นโมฆะยอมรับ ( < แข็งแกร่ง > แข็งแกร่ง > ที )

ในไวยากรณ์ข้างต้น ' ที ” เป็นอาร์กิวเมนต์เดียวที่ดำเนินการบางอย่าง

ให้เราไปที่บล็อกรหัสด้านล่างเพื่อความเข้าใจที่ดีขึ้น:

นำเข้า java.util.ArrayList;
นำเข้า java.util.LinkedList;
นำเข้า java.util.List;
นำเข้า java.util.function.Consumer;

// นำเข้ายูทิลิตี้ ใน ชวา ไฟล์
รูทคลาสสาธารณะ {
โมฆะสาธารณะคงหลัก ( อาร์กิวเมนต์สตริง [ ] ) // การสร้างวิธีการหลัก
{
ผู้บริโภค < จำนวนเต็ม > การกระจาย = k - > System.out.println ( เค ) ;
disp.accept ( 255 ) ;
ผู้บริโภค < รายการ < จำนวนเต็ม > > คูณ = dataEle - >
{
สำหรับ ( int k = 0 ; เค < dataEle.size ( ) ; k++ )
dataEle.set ( เค 5 * dataEle.get ( เค ) ) ;
} ;

ผู้บริโภค < รายการ < จำนวนเต็ม > >
พิมพ์ = dataEle - > dataEle.สตรีม ( ) .แต่ละ ( เจ - > System.out.print ( เจ + '
'
) ) ;
รายการ < จำนวนเต็ม > dataEle = ArrayList ใหม่ < จำนวนเต็ม > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
// ดำเนินการแก้ไขโดยใช้การยอมรับ ( )
คูณยอมรับ ( dataEle ) ;
// ใช้ dispList โดยใช้การยอมรับ ( )
พิมพ์ยอมรับ ( dataEle ) ;
}
}

คำอธิบายของรหัสด้านบน:

  • ประการแรก “ ผู้บริโภค ” อินเทอร์เฟซชื่อ “ แจกจ่าย ” ถูกสร้างขึ้นโดยแสดงพารามิเตอร์ที่ให้ไว้บนคอนโซล โดยไม่ต้องดำเนินการใดๆ
  • ตอนนี้ “ ยอมรับ() ” วิธีการเรียกโดย “ แจกจ่าย ” ผู้บริโภคและคุณค่าของ “ 255 ” ถูกส่งผ่านไปยังวิธีนี้
  • ถัดไปอีก “ ผู้บริโภค ” อินเทอร์เฟซถูกสร้างขึ้นโดยใช้ “ สำหรับ ” วนซ้ำเพื่อใช้การคูณในแต่ละองค์ประกอบที่อยู่ของ ArrayList ชื่อ “ dataEle '.
  • หลังจากนั้นค่อยสร้างใหม่” ผู้บริโภค ” อินเตอร์เฟสเพื่อแสดง “ dataEle ” ผลลัพธ์องค์ประกอบหลังจากใช้การคูณที่มาจากสตรีม
  • ถัดไป เริ่มต้น ArrayList “ dataEle ” ด้วยองค์ประกอบข้อมูลจำลองและใช้ประโยชน์จาก “ ยอมรับ() ” วิธีการด้วย “ คูณ ' อินเตอร์เฟซ.
  • ในตอนท้ายให้เรียก ' ยอมรับ() ” วิธีการโดยใช้ “ พิมพ์ ” อินเทอร์เฟซสำหรับแสดงผลหลังจากใช้การคูณในบันทึกคอนโซล

หลังจากสิ้นสุดการดำเนินการ:

สแนปชอตด้านบนแสดงว่ามีการเรียกอินเทอร์เฟซสำหรับผู้บริโภคหลายรายการทีละรายการโดยใช้ ' ยอมรับ() ' วิธี.

ตัวอย่างที่ 3: การจัดการข้อยกเว้นสำหรับฟังก์ชัน After

ข้อยกเว้นเกิดขึ้นเมื่อ “ หลังจาก ” หน้าที่ของ “ แล้ว() ” วิธีการประกอบด้วย “ ยอมรับ() ' วิธี. สิ่งนี้สร้างอินเทอร์เฟซที่เก็บข้อมูลเพื่อประมวลผลโดยอินเทอร์เฟซโดยใช้วิธีการเชื่อมต่อผู้บริโภคดังที่แสดงด้านล่าง:

นำเข้า java.util.ArrayList;
นำเข้า java.util.LinkedList;
นำเข้า java.util.List;
นำเข้า java.util.function.Consumer;

รูทคลาสสาธารณะ {
โมฆะสาธารณะคงหลัก ( อาร์กิวเมนต์สตริง [ ] )
{
ผู้บริโภค < รายการ < จำนวนเต็ม > > คูณ = dataEle - >
{
สำหรับ ( int j = 0 ; เจ < = dataEle.size ( ) ; เจ++ )
dataEle.set ( เจ 5 * dataEle.get ( เจ ) ) ;
} ;
// ผู้บริโภคเพื่อแสดงรายการจำนวนเต็ม
ผู้บริโภค < รายการ < จำนวนเต็ม > >
พิมพ์ = dataEle - > dataEle.สตรีม ( ) .แต่ละ ( ฉัน - > System.out.print ( ฉัน + ' ' ) ) ;
รายการ < จำนวนเต็ม > dataEle = ArrayList ใหม่ < จำนวนเต็ม > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
พยายาม {
พิมพ์.แล้ว ( คูณ ) .ยอมรับ ( dataEle ) ;
}
จับ ( ข้อยกเว้น อี ) {
System.out.println ( 'ข้อยกเว้น: ' + และ ) ;
}
}
}

คำอธิบายของบล็อกรหัสด้านบน:

  • ประการแรก “ ผู้บริโภค ” อินเทอร์เฟซถูกสร้างขึ้นซึ่งเพียงแค่หลาย ๆ “ 5 ” จำนวนเต็มที่มีองค์ประกอบข้อมูลอยู่ใน ArrayList ที่ให้มา
  • ต่อไป ที่สอง “ ผู้บริโภค ” อินเทอร์เฟซถูกสร้างขึ้นเพื่อแสดงองค์ประกอบข้อมูลแต่ละรายการของ ArrayList ที่สตรีมได้รับ
  • หลังจากนั้น ArrayList จะถูกสร้างขึ้นและเริ่มต้นด้วยค่าประเภทจำนวนเต็มจำลอง
  • จากนั้น “ พยายาม ” บล็อกถูกใช้โดยที่ “ แล้ว() ” วิธีการเรียกโดย “ พิมพ์ ' อินเตอร์เฟซ.
  • มันทำให้เกิด “ IndexOutOfBoundsException ' เพราะว่า ' สำหรับ ” เกินขีดจำกัดการวนซ้ำ ซึ่งแก้ไขได้โดย “ จับ ' ปิดกั้น.

หลังจากสิ้นสุดขั้นตอนการดำเนินการ:

ภาพรวมแสดงให้เห็นว่า IndexOutOfBoundsException ถูกสร้างขึ้นโดยคอมไพเลอร์

บทสรุป

ผู้บริโภค ” อินเทอร์เฟซจัดเตรียมวิธีการกำหนดพฤติกรรมที่ใช้ซ้ำได้และดำเนินการกับข้อมูลอินพุตโดยไม่ส่งกลับผลลัพธ์ มันประกอบด้วย ' ยอมรับ() ' และ ' แล้ว() ” วิธีการ มักใช้สำหรับงานประมวลผลข้อมูล ซึ่งผู้ใช้ต้องดำเนินการกับแต่ละองค์ประกอบของคอลเล็กชันหรือสตรีม นั่นคือทั้งหมดที่เกี่ยวกับการใช้งานและการปรับใช้อินเทอร์เฟซสำหรับผู้บริโภคใน Java