关于Java泛型的stackoverflow已经有一些讨论,但我太愚蠢了,无法解决这个特定的问题。我在项目中定义了一个接口,并在另一个接口中定义了它。它们有不同的包装。编译器在某些工作空间中抱怨:而不是实现该方法:
名称冲突:SuperDuperHighlightable类型的方法高亮显示(EnumSet,int,int)与IHighlightable类型的高亮显示(EnumSet,int,int)具有相同的删除,但不会覆盖它
相同的代码不会在其他工作区中抱怨,我找不到相关的差异。所有项目和工作区都使用JRE SE 1.5。
HighlightingStyle.java
package org.my.api;
public enum HighlightingStyle {
NONE, FIELD, SELECTION, TEST
}
IHighlightable.java
package org.my.api;
import java.util.EnumSet;
import javax.swing.text.BadLocationException;
public interface IHighlightable {
void highlight(EnumSet<HighlightingStyle> style, int start, int length)
throws BadLocationException, IllegalArgumentException;
}
实现:
package org.my.impl;
import java.util.EnumSet;
import javax.swing.text.BadLocationException;
import org.my.api.HighlightingStyle;
import org.my.api.IHighlightable;
public class SuperDuperHighlightable implements IHighlightable {
public void highlight(EnumSet<HighlightingStyle> styleSet, int start, int length)
throws BadLocationException, IllegalArgumentException {
for (HighlightingStyle style : styleSet) {
DoSomething(style, start, length);
}
}
private void DoSomething(HighlightingStyle style, int start, int length) {
// TODO Auto-generated method stub
}
}
如果这是源代码问题,工作区问题或Eclipse出现问题,您有什么见解吗?
答案 0 :(得分:3)
还没有解决方案,但有一些提示和测试:
希望它有助于解决您的问题..
修改强>
没有正确,它在某些工作区中有效。所以我敢肯定,这是一个工作区配置问题,甚至可能是一个bug。此时,我个人不会继续修复该问题,只是将所有项目压缩成单个存档,移动或重命名整个工作区,创建一个新工作区(相同名称,原始位置)并导入所有存档项目。如果没有问题,请删除已移动或重命名的工作区。
当然,您丢失了工作区设置,我无法判断,如果这是您的问题。我以前在某些情况下做过(我有一个关于颠覆和mercurial插件的丑陋问题....)而且这很容易。
答案 1 :(得分:1)
我看到为了问题的目的,明确地修改了类定义。其中任何一个采用参数化类型而你没有使用它?如果是,那么这可以解释问题。我有similar problem,这是根本原因。
答案 2 :(得分:0)
也遇到了这个问题。我终于通过删除和阅读项目来修复它。不要删除磁盘上的内容。