如何在不修改类中的方法的情况下使方法生成自定义输出



我的Java项目组织如下:

  • (包1(it.blabla.myproject包,包含与我的项目严格相关的类
  • (包2(包含一些实用程序类的it.blabla.myproject.utils包,其中一些我在包1中使用

我想保留2号包裹";"一般"=与我的项目无关,所以我可以在其他项目中重复使用它。

2号包包含以下类别:

...
import org.xml.sax.SaxParseException;
...
// For handling errors in xml parsing
class XmlHandler extends DefaultHandler {
...
//stuff
...
@Override
public void error(SAXParseException e) throws SAXException {
System.out.println(e.getMessage()+"; "+currentNodeName);     // Here there should be 
// a project-specific error message
// between the e.getMessage() and
// the currentNodeName
};
...
}

我的问题是:这个错误处理程序返回的消息必须包含一些与项目相关的特定文本(例如:System.out.println(e.getMessage() + "; the data of Company XYZ are not ok; " + currentNodeName);(

如何在不失去utils程序包的通用性的情况下实现这一点?我知道我可以把一个String参数传递给这个方法,然后把我的自定义错误消息放进去,但这有点难看。。。

由于我是Java的新手,我想了解如何正确地实现这一点。在我的项目结构中,您是否发现了错误或没有实现最佳实践?

提前谢谢。

编辑:我也可以创建另一个名为CustomHandler extends XmlHandler的类,问题是:我应该在包1或2中创建它吗?包2中的其他一些类依次使用XmlHandler,所以我也应该修改它们以使用CustomHandler。。。但随后utils包将再次失去其通用性

欢迎使用继承。你看到XmlHandler extends DefaultHandler然后重写错误方法了吗?您可以在项目特定的实现中做同样的事情,例如,通过创建一个CustomXmlHandler来扩展XmlHandler

class CustomXmlHandler extends XmlHandler {

...

@Override
public void error(SAXParseException e) throws SAXException {
// Your custom error handling
}
...
}

最新更新