/* * Copyright (C) 2011 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.errai.codegen.meta; /** * Represents a wildcard type such as {@code ?}, {@code ? extends List} or * {@code ? super MyType}. * * @author Mike Brock <cbrock@redhat.com> * @author Jonathan Fuerth <jfuerth@redhat.com> */ public interface MetaWildcardType extends MetaType { /** * Returns the Java source code representation of this wildcard, for example * "? extends java.util.Collection" or "? super org.xyz.Foo". */ @Override public String getName(); /** * Equivalent to {@link #getName()}. */ @Override public String toString(); /** * Returns the lower bounds of this wildcard type. Examples: * <ul> * <li>{@code <?>} has no lower bounds * <li>{@code <? extends List>} has no lower bounds * <li>{@code <? super List>} has a lower bound of <tt>{List}</tt> * <li>{@code <? super List & Futzable>} has a lower bound of * <tt>{List, Futzable}</tt> * </ul> * * @return The lower bounds of this wildcard type. The return value is never * null--if the wildcard has no lower bounds, an empty array is * returned. */ public MetaType[] getLowerBounds(); /** * Returns the upper bounds of this wildcard type. Examples: * <ul> * <li>{@code <?>} has an upper bound of {@code java.lang.Object} * <li>{@code <? extends List>} has an upper bound of <tt>{List}</tt> * <li>{@code <? super List>} has an upper bound of {@code java.lang.Object} * <li>{@code <? extends List & Futzable>} upper bounds of <tt>{List, Futzable}</tt> * </ul> * * @return The upper bounds of this wildcard type. The return value is never * null--if the wildcard has no upper bounds, an empty array is * returned. */ public MetaType[] getUpperBounds(); }