我相信我的问题的答案是一个巨大的NO,你不能做像
这样的事情public interface Parser {
...
}
并在另一个班级
Parser parser = new Parser();
当然Parser parser
部分完全正常,但new Parser()
显然应该是错误的,不允许,给出编译器错误。 This answer这里有SO和许多我认为没有必要引用的文档。
我仍然在问这个问题,因为我引用了android.text.Html class的第122行,我的Eclipse IDE告诉我这个Parser,我的调用没有参数的构造函数属于接口org.xml.sax.Parser,如截图所示:
此外,引用的类型是相同的Parser类。
我在看什么? Eclipse是否指向错误的.class文件,这实际上是一个名为Parser
的类?我怀疑它是,但如果是这样,Eclipse(不)知道哪个类的引用是一个类型和构造函数属于哪个类?这样的事情可能会使编译器链接错误的类,如果它产生的错误是(我认为)由模块知道在哪里,当我按住Control并左键单击方法时,知道该把我带到哪里?
答案 0 :(得分:1)
Eclipse是否指向错误的.class文件?
没有
这实际上是一个叫做Parser的课程?
是
我怀疑它是,但如果是这样,那么Eclipse(不)知道哪个类的引用是一个类型而构造函数属于哪个类?
基于Java文件顶部的import
语句。
基本上,您需要了解导入的确切方式。
答案 1 :(得分:0)
您可以执行new MyInterface() {};
MyInterface myInterface= new MyInterface() {
@Override
public int myMethod() {
return 1;
}
}
它创建了一个匿名内部类。但是,如果没有在{}
中指定的实施方式,那么您就无法做到。