我有一个接口(Interface),已经以jar包、Java源代码的形式提供,目标版本为1.5。
interface IGetter {
int getInternalID(final long externId);
int getInternalID(long externId, char specifier);
}
我在Java 1.8中实现了一个内部静态类,实现了这个接口。
public static Calculator {
...
public static class LookupTable implements IGetter {
/* (non-Javadoc)
* @see com.mycompany.IGetter#getInternalID(long)
*/
@Override
public int getInternalID(long externId) {
....
return internId;
}
/* (non-Javadoc)
* @see com.mycompany.IGetter#getInternalID(long, char)
*/
@Override <-- Here compiler error; This method is not detected
as beeing in the interface.
public int getInternalID(long externalId, char specifier) {
return ...;
}
}
}
第二个
getInternal(long, char)
方法未被编译器识别为接口方法。在包含接口的jar文件上单击,甚至在eclipse中的类查看器中,左侧窗格中显示该方法已丢失,而在编辑器视图中则显示该方法已在接口中实现。
出了什么问题?在接口中不允许有两个相同名称的方法吗? 为什么Java编译器编译了该接口?(源代码和目标版本都是Java 1.5) 为什么Java 1.8编译器不将其识别为接口方法?(源代码和目标版本都是1.8)
编译器错误为:Calculator.LookupTable 类型的 getInternalID(long, char) 方法必须重写或实现一个超类型方法 Calculator.java。
return ...;
是什么意思?它是伪代码吗? - Amit.rk3