/** Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*********************/package javax.tools;import java.io.*;import java.net.URI;import java.nio.CharBuffer;import javax.lang.model.element.Modifier;import javax.lang.model.element.NestingKind;import javax.tools.JavaFileObject.Kind;/*** Provides simple implementations for most methods in JavaFileObject.* This class is designed to be subclassed and used as a basis for* JavaFileObject implementations. Subclasses can override the* implementation and specification of any method of this class as* long as the general contract of JavaFileObject is obeyed.** @author Peter von der Ahé* @since 1.6*/public class SimpleJavaFileObject implements JavaFileObject {/*** A URI for this file object.*/protected final URI uri;/*** The kind of this file object.*/protected final Kind kind;/*** Construct a SimpleJavaFileObject of the given kind and with the* given URI.** @param uri the URI for this file object* @param kind the kind of this file object*/protected SimpleJavaFileObject(URI uri, Kind kind) {// null checksuri.getClass();kind.getClass();if (uri.getPath() == null)throw new IllegalArgumentException("URI must have a path: " + uri);this.uri = uri;this.kind = kind;}public URI toUri() {return uri;}public String getName() {return toUri().getPath();}/*** This implementation always throws {@linkplain* UnsupportedOperationException}. Subclasses can change this* behavior as long as the contract of {@link FileObject} is* obeyed.*/public InputStream openInputStream() throws IOException {throw new UnsupportedOperationException();}/*** This implementation always throws {@linkplain* UnsupportedOperationException}. Subclasses can change this* behavior as long as the contract of {@link FileObject} is* obeyed.*/public OutputStream openOutputStream() throws IOException {throw new UnsupportedOperationException();}/*** Wraps the result of {@linkplain #getCharContent} in a Reader.* Subclasses can change this behavior as long as the contract of* {@link FileObject} is obeyed.** @param ignoreEncodingErrors {@inheritDoc}* @return a Reader wrapping the result of getCharContent* @throws IllegalStateException {@inheritDoc}* @throws UnsupportedOperationException {@inheritDoc}* @throws IOException {@inheritDoc}*/public Reader openReader(boolean ignoreEncodingErrors) throws IOException {CharSequence charContent = getCharContent(ignoreEncodingErrors);if (charContent == null)throw new UnsupportedOperationException();if (charContent instanceof CharBuffer) {CharBuffer buffer = (CharBuffer)charContent;if (buffer.hasArray())return new CharArrayReader(buffer.array());}return new StringReader(charContent.toString());}/*** This implementation always throws {@linkplain* UnsupportedOperationException}. Subclasses can change this* behavior as long as the contract of {@link FileObject} is* obeyed.*/public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {throw new UnsupportedOperationException();}/*** Wraps the result of openOutputStream in a Writer. Subclasses* can change this behavior as long as the contract of {@link* FileObject} is obeyed.** @return a Writer wrapping the result of openOutputStream* @throws IllegalStateException {@inheritDoc}* @throws UnsupportedOperationException {@inheritDoc}* @throws IOException {@inheritDoc}*/public Writer openWriter() throws IOException {return new OutputStreamWriter(openOutputStream());}/*** This implementation returns {@code 0L}. Subclasses can change* this behavior as long as the contract of {@link FileObject} is* obeyed.** @return {@code 0L}*/public long getLastModified() {return 0L;}/*** This implementation does nothing. Subclasses can change this* behavior as long as the contract of {@link FileObject} is* obeyed.** @return {@code false}*/public boolean delete() {return false;}/*** @return {@code this.kind}*/public Kind getKind() {return kind;}/*** This implementation compares the path of its URI to the given* simple name. This method returns true if the given kind is* equal to the kind of this object, and if the path is equal to* {@code simpleName + kind.extension} or if it ends with {@code* "/" + simpleName + kind.extension}.** <p>This method calls {@link #getKind} and {@link #toUri} and* does not access the fields {@link #uri} and {@link #kind}* directly.** <p>Subclasses can change this behavior as long as the contract* of {@link JavaFileObject} is obeyed.*/public boolean isNameCompatible(String simpleName, Kind kind) {String baseName = simpleName + kind.extension;return kind.equals(getKind())&& (baseName.equals(toUri().getPath())|| toUri().getPath().endsWith("/" + baseName));}/*** This implementation returns {@code null}. Subclasses can* change this behavior as long as the contract of* {@link JavaFileObject} is obeyed.*/public NestingKind getNestingKind() { return null; }/*** This implementation returns {@code null}. Subclasses can* change this behavior as long as the contract of* {@link JavaFileObject} is obeyed.*/public Modifier getAccessLevel() { return null; }@Overridepublic String toString() {return getClass().getName() + "[" + toUri() + "]";}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。