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 package com.github.javaparser.ast.type; 22 23 import com.github.javaparser.TokenRange; 24 import com.github.javaparser.ast.AllFieldsConstructor; 25 import com.github.javaparser.ast.Node; 26 import com.github.javaparser.ast.NodeList; 27 import com.github.javaparser.ast.expr.AnnotationExpr; 28 import com.github.javaparser.ast.visitor.CloneVisitor; 29 import com.github.javaparser.metamodel.JavaParserMetaModel; 30 import com.github.javaparser.metamodel.ReferenceTypeMetaModel; 31 import javax.annotation.Generated; 32 import java.util.function.Consumer; 33 import java.util.Optional; 34 35 /** 36 * Base class for reference types. 37 * 38 * @author Julio Vilmar Gesser 39 */ 40 public abstract class ReferenceType extends Type { 41 42 public ReferenceType() { 43 this(null, new NodeList<>()); 44 } 45 46 @AllFieldsConstructor 47 public ReferenceType(NodeList<AnnotationExpr> annotations) { 48 this(null, annotations); 49 } 50 51 /** 52 * This constructor is used by the parser and is considered private. 53 */ 54 @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator") 55 public ReferenceType(TokenRange tokenRange, NodeList<AnnotationExpr> annotations) { 56 super(tokenRange, annotations); 57 customInitialization(); 58 } 59 60 @Override 61 @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator") 62 public boolean remove(Node node) { 63 if (node == null) 64 return false; 65 return super.remove(node); 66 } 67 68 @Override 69 @Generated("com.github.javaparser.generator.core.node.CloneGenerator") 70 public ReferenceType clone() { 71 return (ReferenceType) accept(new CloneVisitor(), null); 72 } 73 74 @Override 75 @Generated("com.github.javaparser.generator.core.node.GetMetaModelGenerator") 76 public ReferenceTypeMetaModel getMetaModel() { 77 return JavaParserMetaModel.referenceTypeMetaModel; 78 } 79 80 @Override 81 @Generated("com.github.javaparser.generator.core.node.ReplaceMethodGenerator") 82 public boolean replace(Node node, Node replacementNode) { 83 if (node == null) 84 return false; 85 return super.replace(node, replacementNode); 86 } 87 88 @Override 89 @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator") 90 public boolean isReferenceType() { 91 return true; 92 } 93 94 @Override 95 @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator") 96 public ReferenceType asReferenceType() { 97 return this; 98 } 99 100 @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator") 101 public void ifReferenceType(Consumer<ReferenceType> action) { 102 action.accept(this); 103 } 104 105 @Override 106 @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator") 107 public Optional<ReferenceType> toReferenceType() { 108 return Optional.of(this); 109 } 110 } 111