ข้อจำกัดของ var
ตำแหน่งที่ไม่สามารถใช้ var ได้
ข้อจำกัดของ var เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
var มีกฎการใช้งาน
var สะดวก แต่มีข้อจำกัด โดยใช้ได้ เฉพาะกับตัวแปรเฉพาะที่ที่มีตัวกำหนดค่าเริ่มต้น เท่านั้น การรู้ว่าจุดใดใช้ไม่ได้จะช่วยให้หลีกเลี่ยงข้อผิดพลาดในการคอมไพล์ที่น่าหงุดหงิด
ใช้ได้เฉพาะกับตัวแปรเฉพาะที่
var อนุญาตให้ใช้กับตัวแปรเฉพาะที่เท่านั้น เช่น ภายในเมธอดหรือลูป ตัวอย่างด้านล่างถูกต้องเพราะตัวแปรนี้เป็นตัวแปรเฉพาะที่
public class Main {
public static void main(String[] args) {
var greeting = "OK for locals";
System.out.println(greeting);
}
}ใช้กับฟิลด์ไม่ได้
คุณไม่สามารถใช้ var กับฟิลด์ของคลาสได้ ฟิลด์ต้องประกาศชนิดอย่างชัดเจน ตัวอย่างนี้ count เป็นฟิลด์ทั่วไป
public class Main {
static int count = 0;
public static void main(String[] args) {
count = 5;
System.out.println(count);
}
}ใช้กับพารามิเตอร์ของเมธอดไม่ได้
พารามิเตอร์ของเมธอดต้องระบุชนิดอย่างชัดเจน ไม่อนุญาตให้ใช้ var ในรายการพารามิเตอร์ ดังนั้นเมธอดนี้จึงประกาศ String name โดยตรง
public class Main {
static void greet(String name) {
System.out.println("Hi " + name);
}
public static void main(String[] args) {
greet("Lee");
}
}ใช้เป็นชนิดผลลัพธ์ไม่ได้
ชนิดผลลัพธ์ของเมธอดไม่สามารถเป็น var ได้ แต่ต้องระบุอย่างชัดเจน คอมไพเลอร์จะไม่อนุมานชนิดผลลัพธ์ให้
public class Main {
static int square(int x) {
return x * x;
}
public static void main(String[] args) {
System.out.println(square(6));
}
}ต้องมีตัวกำหนดค่าเริ่มต้น
คุณไม่สามารถเขียน var x; โดยไม่กำหนดค่าได้ หากไม่มีตัวกำหนดค่าเริ่มต้น คอมไพเลอร์ก็ไม่มีข้อมูลให้อ้างอิงเพื่ออนุมานชนิด ควรกำหนดค่าให้ทันทีเสมอ
public class Main {
public static void main(String[] args) {
var ready = true;
System.out.println(ready);
}
}ตัวกำหนดค่าเริ่มต้นเป็น null ไม่ได้
var x = null; ใช้ไม่ได้ เพราะ null ไม่มีชนิดเฉพาะ ให้กำหนดค่าที่มีชนิดแทน เช่น สตริงว่าง
public class Main {
public static void main(String[] args) {
var text = "";
text = "now has a value";
System.out.println(text);
}
}ใช้รูปแบบย่อของตัวกำหนดค่าอาร์เรย์ไม่ได้
คุณไม่สามารถเขียน var nums = {1, 2, 3}; ได้ รูปแบบย่อด้วยวงเล็บปีกกาต้องมีการประกาศชนิดอาร์เรย์ไว้ก่อน ให้ใช้ new int[]{...} แทน
public class Main {
public static void main(String[] args) {
var nums = new int[]{1, 2, 3};
System.out.println(nums.length);
}
}ไม่ใช่คำสงวน
ที่น่าสนใจคือ var เป็นชื่อชนิดที่สงวนไว้ ไม่ใช่คำหลัก คุณยังคงตั้งชื่อคลาสว่า var ไม่ได้ แต่กฎนี้มีขอบเขตจำกัด ในทางปฏิบัติให้ถือว่า var เป็นรูปแบบไวยากรณ์สมัยใหม่รูปแบบหนึ่ง
public class Main {
public static void main(String[] args) {
var var2 = "identifiers can contain var";
System.out.println(var2);
}
}ใช้แลมบ์ดาที่ไม่มีชนิดเป้าหมายไม่ได้
คุณไม่สามารถกำหนดแลมบ์ดาเปล่าให้กับ var ได้ เพราะแลมบ์ดาต้องมีชนิดอินเทอร์เฟซเชิงฟังก์ชันเป้าหมายเพื่อใช้อนุมานชนิด ให้ประกาศชนิดอินเทอร์เฟซอย่างชัดเจน
import java.util.function.IntUnaryOperator;
public class Main {
public static void main(String[] args) {
IntUnaryOperator doubler = x -> x * 2;
System.out.println(doubler.applyAsInt(21));
}
}สรุปข้อจำกัด
โปรดจำขอบเขตการใช้งานไว้: ใช้ได้เฉพาะกับตัวแปรเฉพาะที่ ต้องกำหนดค่าเริ่มต้น ห้ามใช้ null ห้ามใช้แลมบ์ดาเปล่า ห้ามใช้รูปแบบย่อของอาร์เรย์ด้วยวงเล็บปีกกา และใช้กับฟิลด์ พารามิเตอร์ หรือชนิดผลลัพธ์ไม่ได้
public class Main {
public static void main(String[] args) {
var ok = 42;
System.out.println("var is for locals: " + ok);
}
}ตรวจสอบอย่างรวดเร็ว
ข้อใดต่อไปนี้เป็นการใช้ var ที่ถูกต้อง
ทบทวน
คุณได้เรียนรู้ข้อจำกัดของ var ดังนี้:
- ใช้ได้ เฉพาะกับตัวแปรเฉพาะที่ ที่มีตัวกำหนดค่าเริ่มต้น
- ใช้กับฟิลด์ พารามิเตอร์ หรือชนิดผลลัพธ์ไม่ได้
- ไม่สามารถอนุมานชนิดจาก
nullหรือแลมบ์ดาเปล่าได้ - ไม่มีรูปแบบย่อของอาร์เรย์ด้วยวงเล็บปีกกา
- เป็นชื่อชนิดที่สงวนไว้ ไม่ใช่คำหลัก
คำถามที่พบบ่อย
บทเรียน “ข้อจำกัดของ var” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ข้อจำกัดของ var” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ข้อจำกัดของ var”
ตำแหน่งที่ไม่สามารถใช้ var ได้ คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ข้อจำกัดของ var” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ