我的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
}
...
}