/*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.forge.roaster.model;
import org.jboss.forge.roaster.Origin;
/**
* Represents an element definition of a {@link JavaAnnotation}.
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
* @author Matt Benson
*/
public interface AnnotationElement<O extends JavaAnnotation<O>> extends AnnotationTarget<O>,
Origin<O>, Named
{
/**
* Represents the default value of a given {@link AnnotationElement}.
*/
interface ReadDefaultValue<O extends JavaAnnotation<O>>
{
String getString();
String getLiteral();
<T extends Enum<T>> T getEnum(Class<T> type);
<T extends Enum<T>> T[] getEnumArray(Class<T> type);
Annotation<O> getAnnotation();
Class<?> getSingleClass();
Class<?>[] getClassArray();
}
/**
* Get this annotation element's {@link Type}.
*/
Type<O> getType();
ReadDefaultValue<O> getDefaultValue();
}