【发布时间】:2015-11-02 17:03:45
【问题描述】:
我有一个接口,构建并提供为 jar、java src 和 target = 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编译器为什么要编译接口? (src 和目标 = java 1.5)
为什么java 1.8编译不承认它是接口方法。 (源和目标 1.8)
编译器错误是:Calculator.LookupTable 类型的方法 getInternalID(long, char) 必须覆盖或实现超类型方法 Calculator.java
【问题讨论】:
-
您确定要导入正确的界面吗?
-
return ...;是什么,是伪代码吗? -
... 是伪代码,@Henson:参数的名称不是签名的一部分
-
@purring hm 我在 claspath 中有另一个 jar,它可能是用这个 IGetter 的旧版本编译的
标签: java interface method-signature