我从未遇到过这样的事情,我也不知道这种编码!
这是什么? (我对Java很陌生)

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
        };

在构造函数调用之后,有一个花括号(!?),似乎有些方法被重写了。然后,用分号终止括号。在构造函数调用之后,我从未见过大括号。正常吗怎么称呼呢?谢谢!

附言:在Eclipse上,如果我删除了分号,则会显示LocalVariableDeclarationStatement错误。

最佳答案

那是一个anonymous class

当您要创建一个从另一个类或接口(interface)派生的类,而又不需要在代码中的其他任何地方使用新类时,匿名类可能会很有用。



在您的特定情况下, DefaultHandler 类是一个帮助程序类,它通过提供不执行任何操作的方法来实现几个接口(interface)(EntityResolverDTDHandlerContentHandlerErrorHandler)。这个想法是,您可以从此类派生并仅覆盖所需的特定方法。与直接实现接口(interface)相比,这可以节省更少的代码,因为这时您将需要为每个方法(包括您不打算使用的方法)提供定义。

10-08 00:21