Kekeliruan Ungkapan Malar Pernyataan Suis Java
Dalam Java, pernyataan suis memerlukan ungkapan malar sebagai label kes. Walau bagaimanapun, pembangun sering menghadapi ralat yang mengadu tentang ungkapan tidak tetap walaupun semasa menggunakan pembolehubah yang kelihatan tetap.
Pertimbangkan contoh berikut:
public abstract class Foo { public static final int BAR; public static final int BAZ; public static final int BAM; public static String lookup(int constant) { switch (constant) { case Foo.BAR: return "bar"; case Foo.BAZ: return "baz"; case Foo.BAM: return "bam"; default: return "unknown"; } } }
Apabila menyusun kod ini, anda mungkin menghadapi "pemalar ungkapan diperlukan" ralat pada setiap label kes.
Mengapa tidak Foo.BAR pembolehubah pemalar?
Walaupun pembolehubah Foo.BAR dimalarkan secara berkesan dari perspektif pelaksanaan, ia bukan "pemalar masa kompilasi" seperti yang diperlukan oleh Spesifikasi Bahasa Java (JLS). Bahagian 15.28 JLS mentakrifkan ungkapan malar sebagai:
Dalam contoh di atas, pembolehubah Foo.BAR tidak diisytiharkan dengan pemula eksplisit, oleh itu ia tidak layak sebagai pemalar masa kompilasi.
Penyelesaian:
Untuk menyelesaikan ralat, mulakan pembolehubah Foo.BAR dengan ungkapan pemalar masa kompilasi:
public static final int BAR = 1; public static final int BAZ = 2; public static final int BAM = 3;
Atas ialah kandungan terperinci Mengapakah Pernyataan Suis Java Tidak Menerima Pembolehubah Yang Nampak Malar sebagai Label Kes?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!