Memahami dan Menyelesaikan Ralat "'.class' Jangkaan"
Semasa menyusun kod dalam Java, pembangun mungkin menghadapi mesej ralat misterius " '.kelas' dijangka." Ralat ini boleh membingungkan untuk kedua-dua pemula dan pengaturcara berpengalaman. Mari kita mendalami makna, punca dan ubat yang berkesan.
Maksud dan Punca
Ralat "'.class' dijangka" timbul apabila pengkompil menemui jenis ( cth., int, int[]) di mana ia menjangkakan ungkapan. Tingkah laku ganjil ini berpunca daripada kekeliruan pengkompil semasa semakan sintaks, menyebabkan ia menjangkakan pengisytiharan kelas selepas tempoh (.).
Contoh
Berikut ialah beberapa contoh ralat:
double d = 1.9; int i = int d; // error here
int j = someFunction(int[] a); // error here
Dalam kedua-dua kes, pengkompil akan mengadu dengan "ralat: '.class' dijangka."
Resolusi
"Cadangan" yang tidak membantu untuk menambah ".class" hampir selalu tidak betul. Sebaliknya, penyelesaian sebenar bergantung pada tujuan jenis yang dimaksudkan dalam kod:
1. Jenis Casting:
Jika niat adalah untuk melakukan cast jenis, sertakan jenis dalam kurungan:
double d = 1.9; int i = (int) d; // Correct: casts `1.9` to an integer
2. Tugasan Pembolehubah atau Lulus Parameter:
Lazimnya, jenis hendaklah dialih keluar untuk tugasan mudah atau lulus parameter:
int j = someFunction(a); // Correct ... assuming `a`'s type is suitable for the call
Tambahan Contoh
Salah:
someMethod(array[]);
Betul:
someMethod(array); // pass ref to array someMethod(array[someExpression]); // pass array element
Salah:
int i = someMethod(int j);
Betul:
int i = someMethod(j);
Salah:
int i = int(2.0);
Betul:
int i = (int) 2.0;
Salah:
int[]; letterCount = new int[26];
Betul:
int[] letterCount = new int[26];
Salah:
if (someArray[] > 80) { // ... }
Betul:
if (someArray[someIndex] > 80)
Dalam betul:
int[] integers = new int[arraySize]; ... return integers[];
Betul:
return integers; // Return entire array return integers[someIndex]; // Return array element
Salah:
if ((withdraw % 5 == 0) & (acnt_balc >= withdraw + 0.50)) double cur = acnt_balc - (withdraw + 0.50); System.out.println(cur); else System.out.println(acnt_balc);
Betul:
if ((withdraw % 5 == 0) & (acnt_balc >= withdraw + 0.50)) { double cur = acnt_balc - (withdraw + 0.50); System.out.println(cur); } else { System.out.println(acnt_balc); }
Atas ialah kandungan terperinci Mengapakah saya mendapat ralat ''.class' expected' dalam Java dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!