Hi,

> Thanks for that, I had not realised that the open method was simply
> inherited from the FSDirectory, I should have read the docs.
> 
> However, it makes no sense to me that a call to NIOFSDirectory.open() can
> end up opening a MMapDirectory, and in general that a call to one subclass
> can end up opening any other of the subclasses. Perhaps the open() method
> which selects the subclass should only be in the FSDirectory class and the
> subclass open() methods should specifically open the class for which they are
> called.

This cannot be prevented. FSDirectory.open() is a static method and exists only 
in the class FSDirectory not anywhere else. Your build environment (e.g. IDE) 
should warn you that you are calling a static method in a non-static context or 
on a different class name. Java unfortunately always makes static fields and 
variables visible to subclasses, but they are not virtual and is a "bug" in 
Java. MMapDirectory has no static open method.

Uwe


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to