下面的代码编译成功,其中在某个类中,我编写了两个具有相同名称和相同类型签名的方法。我使用的是Eclipse Oxygen 4.7.0,我可以看到错误Duplicate method show(int,int)
显示为红色。但是当我编译代码时,它被成功编译并得到正确的输出。当我在命令提示符中使用javac
运行相同的代码时,它确实没有被编译。
package oops2;
class A6
{
int i, j;
void show(int i, int j)
{
System.out.println(" i & j : " +i + " " +j);
}
void show(int k, int l)
{
System.out.println("override or not");
}
void show(String s)
{
System.out.println("Entered str is "+s);
}
}
public class OverrideNoInherit
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
A6 a = new A6();
a.show(20, 30);
a.show("this is it");
}
}
在这里,我想提一下,当我在Eclipse上单击run
时,我会看到一个弹出窗口
此项目中存在
错误,是否继续启动?
现在,这个错误是不是意味着在同一项目中还有其他类有错误&因此没有编译。我不认为这意味着尽管代码中有错误,但程序会被编译。那么警告和错误之间有什么区别呢?
发布于 2018-06-25 05:54:14
Eclipse总是编译类。包含错误的方法体被替换为抛出包含该类的编译错误的java.lang.Error
的方法。这实际上对测试驱动开发很有帮助,测试驱动开发允许您在有编译错误的类上启动测试。即使其他部分当前包含错误,也可以测试可编译的方法。
你这里有个特例。编译器能够编译第一次出现的方法,但后来遇到了无法添加到类中的重复方法。因为第一个方法已经编译,并且当您不顾警告强制启动类时,您会看到成功编译的常规方法。
https://stackoverflow.com/questions/51011625
复制相似问题