【发布时间】:2013-06-21 09:26:25
【问题描述】:
我正在使用 twitter4j 开发应用程序。我使用 DAO 将推文存储在一个文件中。
我实现了StatusListener 类:
public class StatusListenerStore implements StatusListener {
// DAO
private DAO<Status> m_statusDAO;
// Constructor
public StatusListenerStore(FactoryType a_factoryType,ArrayList<String> a_lanTrackList) {
super();
AbstractDAOFactory l_DAOFactory = AbstractDAOFactory.getFactory(a_factoryType);
m_statusDAO = l_DAOFactory.getTweetDAO();
}
}
调用的 DAO 是:
// Extract of my class
private static HadoopFileSystem m_hadoopFileSystem = null;
public TweetHADOOPDAO(){
m_hadoopFileSystem = new HadoopFileSystem(m_path+m_filename);
}
public void close(){
m_hadoopFileSystem.closeWriters();
}
HadoopFileSystem 包含 OutputStream 我必须关闭。
首先,我的所有程序只需要一个 HadoopFileSystem 对象实例。静态关键字保证我?
接下来,要关闭我的输出流,我必须在流完成后调用 DAO 类中的 close 函数。我使用正确的shutdown() 函数将其关闭。
但是 m_statusDAO 对象是在我的 StatusListener 类中声明的。当流关闭时,如何在此类中调用我的 close() 函数?
【问题讨论】: