一个接口具有两个具有相同名称但不同签名的方法
One interface with two methods having same name but different signature
我有 一个 接口,构建并提供为 jar,java src,目标 = 1.5
interface IGetter {
int getInternalID(final long externId);
int getInternalID(long externId, char specifier);
}
我在 java 1.8 中实现了一个内部静态 class 实现这个接口
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中的class查看器,在方法概览的左窗格中显示该方法丢失,而在编辑器视图中显示方法在接口中实现。
怎么了,是不是一个接口中的两个方法不能重名?
为什么java编译器编译接口? (源和目标 = java 1.5)
为什么java 1.8 编译不识别为接口方法。 (来源和目标 1.8)
编译器错误是:类型 Calculator.LookupTable 的方法 getInternalID(long, char) 必须覆盖或实现超类型方法 Calculator.java
原因是类路径中有另一个jar文件是用旧版本的IGetter
接口编译的。
感谢网友purring pigeon,问我是否确定导入了正确的界面
因为您正在使用 Java 5,所以您不能使用 @Override
注释。它不适用于任何低于 Java6 的版本。这就是为什么注释在旧版本中是可选的,因为如果它是强制性的,它将破坏向后兼容性。
在 Java 5: 中 @Override
注释仅引用 superclasses。
在Java 6+:中,@Override
注解引用了超classes和实现的方法。
您的代码出错,因为在 Java 5 中,这不是您在 class 中实现的方法的有效注释。删除它并重新编译。
我有 一个 接口,构建并提供为 jar,java src,目标 = 1.5
interface IGetter {
int getInternalID(final long externId);
int getInternalID(long externId, char specifier);
}
我在 java 1.8 中实现了一个内部静态 class 实现这个接口
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中的class查看器,在方法概览的左窗格中显示该方法丢失,而在编辑器视图中显示方法在接口中实现。
怎么了,是不是一个接口中的两个方法不能重名?
为什么java编译器编译接口? (源和目标 = java 1.5)
为什么java 1.8 编译不识别为接口方法。 (来源和目标 1.8)
编译器错误是:类型 Calculator.LookupTable 的方法 getInternalID(long, char) 必须覆盖或实现超类型方法 Calculator.java
原因是类路径中有另一个jar文件是用旧版本的IGetter
接口编译的。
感谢网友purring pigeon,问我是否确定导入了正确的界面
因为您正在使用 Java 5,所以您不能使用 @Override
注释。它不适用于任何低于 Java6 的版本。这就是为什么注释在旧版本中是可选的,因为如果它是强制性的,它将破坏向后兼容性。
在 Java 5: 中 @Override
注释仅引用 superclasses。
在Java 6+:中,@Override
注解引用了超classes和实现的方法。
您的代码出错,因为在 Java 5 中,这不是您在 class 中实现的方法的有效注释。删除它并重新编译。