我已将此错误隔离为以下行: string.getClass()== jojo.getClass() 不应该创建两个Class对象,然后检查它们(如两个引用)指向同一个对象?代码将不会运行,而不是返回false值。使用==运算符编译错误
public class Tester
{
public static void main(String[] args)
{
OreoJar jojo = new OreoJar(0);
OreoJar momo = new OreoJar(1);
String string = "Hello";
if (momo.getClass() == jojo.getClass())
{
System.out.println("Momo and jojo are of the same class");
}
if (string.getClass() == jojo.getClass())
{
System.out.println("String and jojo are of the same class");
}
}
}
public class OreoJar
{
int oreos;
public OreoJar(int oreos)
{
this.oreos = oreos;
}
public void count()
{
System.out.println(oreos + " oreos in this jar!");
}
}
这个评论是一种隐藏的,我认为它值得一提的,因为它最有意义的初学者(比如我)
- 根据该JLS“这是一个编译时错误如果不可能通过转换转换将任一操作数的类型转换为另一操作数的类型“,所以只有在A可以转换为B或B时,可以比较类型A和B的两个引用可以是投给A. - Patricia Shanahan
如果你得到一个*编译错误*,你需要我们的帮助,然后常识告诉你,你应该在这里发布错误,不是吗? –
也许你应该告诉我们错误是什么? – OldProgrammer
将'public class OreoJar'设为'private class OreoJar'然后再试一次? – Marcus