etf.org/rfc/rfc3986.txt">RFC 3986, section 3.3. Informally, this should be true:
URI. {@linkplain java.net.URI#create create}(relativeName). {@linkplain java.net.URI#normalize normalize}(). {@linkplain java.net.URI#getPath getPath}().equals(relativeName)
All methods in this interface might throw a SecurityException.
An object of this interface is not required to support multi-threaded access, that is, be synchronized. However, it must support concurrent access to different file objects created by this object.
Implementation note: a consequence of this requirement is that a trivial implementation of output to a {@linkplain java.util.jar.JarOutputStream} is not a sufficient implementation.That is, rather than creating a JavaFileObject that returns the JarOutputStream directly, the contents must be cached until closed and then written to the JarOutputStream.
Unless explicitly allowed, all methods in this interface might throw a NullPointerException if given a {@code null} argument.
@author Peter von der Ahé
@author Jonathan Gibbons
@see JavaFileObject
@see FileObject
@since 1.6