1 /* 2 * Copyright (C) 2007-2010 Jlio Vilmar Gesser. 3 * Copyright (C) 2011, 2013-2016 The JavaParser Team. 4 * 5 * This file is part of JavaParser. 6 * 7 * JavaParser can be used either under the terms of 8 * a) the GNU Lesser General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * b) the terms of the Apache License 12 * 13 * You should have received a copy of both licenses in LICENCE.LGPL and 14 * LICENCE.APACHE. Please refer to those files for details. 15 * 16 * JavaParser is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU Lesser General Public License for more details. 20 */ 21 22 package com.github.javaparser.ast.type; 23 24 import com.github.javaparser.Range; 25 import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations; 26 import com.github.javaparser.ast.visitor.GenericVisitor; 27 import com.github.javaparser.ast.visitor.VoidVisitor; 28 29 /** 30 * @author Julio Vilmar Gesser 31 */ 32 public final class WildcardType extends Type<WildcardType> implements NodeWithAnnotations<WildcardType> { 33 34 private ReferenceType ext; 35 36 private ReferenceType sup; 37 38 public WildcardType() { 39 } 40 41 public WildcardType(final ReferenceType ext) { 42 setExtends(ext); 43 } 44 45 public WildcardType(final ReferenceType ext, final ReferenceType sup) { 46 setExtends(ext); 47 setSuper(sup); 48 } 49 50 public WildcardType(final Range range, 51 final ReferenceType ext, final ReferenceType sup) { 52 super(range); 53 setExtends(ext); 54 setSuper(sup); 55 } 56 57 @Override public <R, A> R accept(final GenericVisitor<R, A> v, final A arg) { 58 return v.visit(this, arg); 59 } 60 61 @Override public <A> void accept(final VoidVisitor<A> v, final A arg) { 62 v.visit(this, arg); 63 } 64 65 public ReferenceType getExtends() { 66 return ext; 67 } 68 69 public ReferenceType getSuper() { 70 return sup; 71 } 72 73 public WildcardType setExtends(final ReferenceType ext) { 74 this.ext = ext; 75 setAsParentNodeOf(this.ext); 76 return this; 77 } 78 79 public WildcardType setSuper(final ReferenceType sup) { 80 this.sup = sup; 81 setAsParentNodeOf(this.sup); 82 return this; 83 } 84 85 } 86