java错误.class_“错误:预期为.class”是什么意思,我该如何解
决
⾸先,这是⼀个编译错误。如果在运⾏时看到该消息,则可能是正在运⾏的代码具有编译错误。
以下是错误的⼏个⽰例:
double d = 1.9;
int i = int d; // error here
^
int j = someFunction(int[] a); // error here
关于读书的演讲稿^
在这两种情况下,编译器错误消息均为error: '.class' expected。
错误消息是什么意思,原因是什么?
坦率地说,编译器在语法检查过程中被⼀些毫⽆意义的代码弄糊涂了。编译器在实际期望表达式的上下⽂中遇到了类型(例如int或int[])。这就是说,在此.之后在语法上唯⼀可以接受的符号将是class。
这是该语法正确的⽰例。
Class> clazz = int; // incorrect
Class> clazz = int.class; // correct!
注意:应该总是有可能弄清楚为什么编译器的语法检查器认为类型应该是表达式。但是,将其视为“编译器已混淆”并查找引起混淆的(不可避免的!)语法错误通常更简单。对于初学者来说,语法错误可能并不明显……但是知道这是根本原因是⼀个好的开始。
英文铃音
您如何解决?
不幸的是,添加的“建议” .class⼏乎总是不正确的。在本答案开头的两个⽰例中,它当然⽆济于事!
实际的修复⽅法取决于您将类型放在此处以达到的⽬的。
如果您打算编写⼀个类型转换,则需要在该类型周围加上括号(圆括号)。例如
double d = 1.9;
int i = (int) d; // Correct: casts `1.9` to an integer
boee如果您只是打算按原样分配值或传递参数,则应删除类型。
英语短文故事int j = someFunction(a); // Correct ... assuming that the type of
// 'a' is suitable for that call.
声明⽅法时,需要指定形式参数的类型。但是您通常不需要为实际参数指定它。在少数情况下(为了解决过载歧义),请使⽤类型强制转换。
更多例⼦
someMethod(array[]);
报告错误,array[]因为它是类型⽽不是表达式。更正可能是:
someMethod(array); // pass ref to the entire array
要么
最新游戏名someMethod(array[someExpression]); // pass a single array element
int i = someMethod(int j);
程序员已将参数声明放⼊⽅法调⽤中。这⾥需要⼀个表达式,⽽不是⼀个声明:
int i = someMethod(j);
int i = int(2.0);
程序员正在尝试进⾏类型转换。应该这样写:
int i = (int) 2.0;
codcrint[]; letterCount = new int[26];
tanya
程序员添加了⼀个虚假的分号。应该这样写:英文词典下载
int[] letterCount = new int[26];
if (someArray[] > 80) {
/
/ ...
}
的someArray[]表⽰类型不是表达式。程序员可能表⽰类似someArray[someIndex] > 80或的意思someArray.length > 80。
if ((withdraw % 5 == 0) && (acnt_balc >= withdraw + 0.50))
double cur = acnt_balc - (withdraw + 0.50);
gear motorSystem.out.println(cur);
el
System.out.println(acnt_balc);
withregardto这⾥的错误是“ then”语句周围应该有花括号。
if ((withdraw % 5 == 0) && (acnt_balc >= withdraw + 0.50)) {
double cur = acnt_balc - (withdraw + 0.50);
System.out.println(cur);
} el {
System.out.println(acnt_balc);
}
但是编译器的困惑是“ if”的“ then”⼦句不能是变量声明。因此,解析器正在寻找⼀个可能是⽅法调⽤的表达式。例如,以下内容在本地语法上是有效的:
if ((withdraw % 5 == 0) && (acnt_balc >= withdraw + 0.50))
wInstance(); // no compilation error here
...尽管就其尝试⽽⾔是荒谬的。当然,然后编译器会越过悬空el。