这是什么类型的Java构造函数调用?
我从来没有遇到过这样的事情,我不知道这种类型的编码! 这是什么?(我对Java相当陌生) 在构造函数调用之后,有一个大括号(!?),并且似乎覆盖了一些方法。然后大括号以分号结尾。我从未见过构造函数调用后的brake。这正常吗?它叫什么名字?谢谢大家! p、 s:在Eclipse上,如果我删除分号,它会显示这是什么类型的Java构造函数调用?,java,constructor,overriding,Java,Constructor,Overriding,我从来没有遇到过这样的事情,我不知道这种类型的编码! 这是什么?(我对Java相当陌生) 在构造函数调用之后,有一个大括号(!?),并且似乎覆盖了一些方法。然后大括号以分号结尾。我从未见过构造函数调用后的brake。这正常吗?它叫什么名字?谢谢大家! p、 s:在Eclipse上,如果我删除分号,它会显示LocalVariableDeclarationStatement错误。这是一个错误 当您想要创建一个从另一个类或接口派生的类,但不需要在代码中的任何其他地方使用新类时,匿名类非常有用 匿名类最
LocalVariableDeclarationStatement
错误。这是一个错误
当您想要创建一个从另一个类或接口派生的类,但不需要在代码中的任何其他地方使用新类时,匿名类非常有用
匿名类最优雅的一点是,它们允许您在需要的地方定义一次性类。此外,匿名类具有简洁的语法,可以减少代码中的混乱
在您的特定情况下,该类是一个帮助器类,通过提供不做任何操作的方法来实现多个接口(
EntityResolver
,DTDHandler
,ContentHandler
,ErrorHandler
)。其思想是,您可以从这个类派生并只重写您需要的特定方法。这比直接实现接口的代码要少得多,因为这样您就需要为每个方法提供定义,包括您不打算使用的方法。这是匿名类定义。DefaultHandler是一个接口,没有实现,您在创建实例时正在那里创建一个
由于
DefaultHandler
是一个接口,它需要一个实现DefaultHandler
接口的类的对象。但是,如果没有这样的类,或者您需要一个不同的类,您可以通过在运行中实现接口来创建满足此要求的对象。它是一个匿名内部类。用谷歌搜索“匿名java类”。它基本上是一个从接口动态创建的类。整个定义是内联指定的,请将其视为“new DefaultHandler()”部分之后的类定义。显然,此特定类定义只能在此处使用。匿名类使用此定义 这是一个匿名类定义。它基本上是一种实现抽象类或扩展类的方法。因此,您要么实现DefaultHandler
类,要么扩展DefaultHandler
,这取决于DefaultHandler
是抽象类还是具体类。我知道实现接口的类应该定义接口中声明的所有方法,我错了吗?在我的示例中,只定义了3个方法!它不是一个接口,而是一个类。检查DefaultHandler的文档。您是对的,但是DefaultHandler
可能是一个抽象类,在这种情况下,您只需要定义抽象方法右侧。这是一门课。那么,在匿名类中有方法重写吗?谢谢。我会编辑一点你的答案来帮助其他人;)
DefaultHandler handler = new DefaultHandler() {
boolean bfname = false;
boolean blname = false;
boolean bnname = false;
boolean bsalary = false;
public void startElement(String uri, String localName,String qName,
Attributes attributes) throws SAXException {
// code
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
// code
}
public void characters(char ch[], int start, int length) throws SAXException {
// code
};