我用我编写的一些Java代码收到以下错误:
internal error; cannot instantiate () at <anonymous <any>> to ()
我所做的是创建了一个类似于java.lang.Comparable
的界面,其定义如下:
public interface Comparable<T>
{
public int compareTo(T o);
}
我的界面是:
public interface CustomComparable<T>
{
public int compare(T a, T b);
}
如果我尝试使用Comparable创建一个匿名内部类,那很好......
public void someThing()
{
Comparable<Object> o = new Comparable<Object>()
{
public int compareTo(Object o)
{
// ...
}
};
}
通过我的界面,我得到了上面列出的错误。为什么? java.lang.Comparable
是否经过特殊处理?
public void someThing()
{
CustomComparable<Object> o = new CustomComparable<Object>()
{
public int compare(Object a, Object b)
{
// ...
}
};
}
我正在使用Java 1.6u21和NetBeans 6.9.1。
答案 0 :(得分:2)
这可能是微不足道的,但我在Netbeans 7.0中遇到了同样的问题。以下代码给出了相同的错误:
JSlider slider1 = new JSlider(JSlider.HORIZONTAL, -100, 100, 0);
slider1.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
System.out.println("Slider1: " + slider1.getValue());
}
});
问题不在于完全限定ChangeListener。我必须导入javax.swing.event.ChangeListener。
答案 1 :(得分:1)
看起来您想要使用Comparator<T>
而不是Comparable<T>
- 界面已经存在。
答案 2 :(得分:1)
以下代码在java 1.6.0_20-b02中编译并运行且没有错误:
public class Test {
public static void main(String[] args) {
CustomComparable<Object> o = new CustomComparable<Object>()
{
public int compare(Object a, Object b)
{
System.out.println(a);
System.out.println(b);
return 0;
}
};
o.compare("a", "b");
}
public interface CustomComparable<T>
{
public int compare(T a, T b);
}
}
您确定您发布的代码代表了您的问题的良好测试用例吗?
答案 3 :(得分:1)
我也在netbeans 6.9.1中看到了这一点(在JDK 1.6_22 fwiw下)。 我在包中有几个类在netbeans的某些行显示错误,但是它们会编译而没有错误。关闭/重新开启netbeans并没有解决它,重建也没有。 我所做的就是去“触摸”包中的每个文件以将它们标记为脏,然后再次构建项目并且它们就消失了。
答案 4 :(得分:0)
java标准库类不受javac专门处理。 你在javac,congratualations中遇到了一个错误。
答案 5 :(得分:0)
我最近在NetBeans中遇到了同样的问题,但错误不是短暂的。
comboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
// do stuff
}
});
请注意,当我使用Ant时,它们会正确编译,但NetBeans仍然会标记它们:“内部错误;无法实例化()到()”等。关于错误,我唯一可以说的是匿名类是在静态初始化程序内部的另外两个匿名类中的方法内部。
我使用的是带有Java 1.6.0_22的32位x86 OS X 10.6.6和带有所有当前更新的NetBeans 6.9。