พื้นฐานเจเนอิกส์ (T และการอนุมานชนิด)
เรียนรู้พารามิเตอร์ชนิดเจเนอริก T เหตุผลที่ช่วยให้ปลอดภัยตั้งแต่เวลาคอมไพล์ และวิธีที่ตัวดำเนินการ diamond อนุมานชนิดข้อมูล
พื้นฐานเจเนอิกส์ (T และการอนุมานชนิด) เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน
เหตุใดจึงต้องใช้เจเนอริก
เจเนอริก เพิ่มชนิดข้อมูลให้กับคอนเทนเนอร์และเครื่องมือ เพื่อให้คอมไพเลอร์ช่วยป้องกันข้อผิดพลาด ประโยชน์มีดังนี้:
- ความปลอดภัยด้านชนิดข้อมูล — ไม่ผสมชนิดข้อมูลโดยไม่ตั้งใจ
- ไม่ต้องแปลงชนิด — โค้ดอ่านง่ายขึ้น
- นำกลับมาใช้ซ้ำได้ — คลาสเดียวใช้งานได้กับหลายชนิดข้อมูล
T คืออะไร
T (พารามิเตอร์ชนิดข้อมูล) เป็นตัวแทนของชนิดข้อมูลจริง เมื่อเขียน Box<String> คอมไพเลอร์จะถือว่า T เป็น String ภายในการใช้งานนั้น
โค้ด: Box<T>
Box<T>: เมื่อแทน T ด้วย String จะยอมรับเฉพาะ String เท่านั้น ชนิดข้อมูลที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาดขณะคอมไพล์ จึงไม่เกิดปัญหาที่คาดไม่ถึงขณะทำงาน
public class Main {
// A tiny generic container
static class Box<T> {
private T value;
void set(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
Box<String> bs = new Box<String>(); // T becomes String
bs.set("hello");
System.out.println(bs.get()); // no cast needed
// Box<Integer> bi = new Box<Integer>();
// bi.set("oops"); // would not compile: String is not Integer
}
}
โค้ด: การอนุมานชนิดด้วยเครื่องหมายเพชร
<> (เครื่องหมายเพชร) ช่วยให้คอมไพเลอร์อนุมานชนิดข้อมูลจากด้านขวา หากไม่สอดคล้องกับชนิดข้อมูลด้านซ้าย โค้ดจะคอมไพล์ไม่ผ่าน จึงช่วยเพิ่มความปลอดภัย
public class Main {
static class Box<T> {
private T value;
Box() {}
Box(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
// Type on the left, diamond on the right — compiler infers T
Box<Integer> a = new Box<>(123);
Box<String> b = new Box<>("hi");
System.out.println(a.get() + 1); // 124
System.out.println(b.get().toUpperCase());
}
}
พารามิเตอร์ชนิดข้อมูลที่มีขอบเขต
ขอบเขต: เมธอดเจเนอริกบางรายการต้องการความสามารถอย่าง Comparable ตัวอย่างเช่น <T extends Comparable<T>> หมายความว่า T ต้องสามารถนำมาเปรียบเทียบได้
โค้ด: เมธอดเจเนอริกที่มีขอบเขต
เมธอดเจเนอริก: <T extends Comparable<T>> ชนิด Integer และ String ใช้งานร่วมกันได้ เพราะทั้งสองชนิดใช้อินเทอร์เฟซ Comparable
public class Main {
// Generic method: works for any Comparable type
static <T extends Comparable<T>> T min(T a, T b) {
return (a.compareTo(b) <= 0) ? a : b;
}
public static void main(String[] args) {
System.out.println(min(3, 7)); // Integer
System.out.println(min("apple", "banana")); // String (lexicographic)
}
}
แบบฝึกตรวจสอบพื้นฐานเจเนอริก
ตรวจสอบอย่างรวดเร็ว: ประโยชน์หลักของการใช้เจเนอริกอย่าง Box<String> คืออะไร
ทบทวน
ทบทวน: T เป็นตัวแทนของชนิดข้อมูล และเครื่องหมายเพชรช่วยอนุมานชนิดข้อมูล เราใช้ขอบเขต (extends Comparable) เพื่อทำให้เมธอดเจเนอริกปลอดภัยและมีประสิทธิภาพยิ่งขึ้น
เรียนรู้ Java ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 104
- บทเรียน
- 374
คำถามที่พบบ่อย
บทเรียน “พื้นฐานเจเนอิกส์ (T และการอนุมานชนิด)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐานเจเนอิกส์ (T และการอนุมานชนิด)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐานเจเนอิกส์ (T และการอนุมานชนิด)”
เรียนรู้พารามิเตอร์ชนิดเจเนอริก T เหตุผลที่ช่วยให้ปลอดภัยตั้งแต่เวลาคอมไพล์ และวิธีที่ตัวดำเนินการ diamond อนุมานชนิดข้อมูล คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “พื้นฐานเจเนอิกส์ (T และการอนุมานชนิด)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อินเทอร์เฟซในทางปฏิบัติ
- พื้นฐานเจเนอิกส์ (T และการอนุมานชนิด)
- เมธอดและคลาสเจเนอริก