1 /* 2 * Copyright (C) 2007-2010 Júlio 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.resolution.declarations; 23 24 /** 25 * A generic declaration. 26 * 27 * @author Federico Tomassetti 28 */ 29 public interface ResolvedDeclaration { 30 31 /** 32 * Anonymous classes do not have a name, for example. 33 */ hasName()34 default boolean hasName() { 35 return true; 36 } 37 38 /** 39 * Should return the name or return null if the name is not available. 40 */ getName()41 String getName(); 42 43 /** 44 * Does this declaration represents a class field? 45 */ isField()46 default boolean isField() { 47 return false; 48 } 49 50 /** 51 * Does this declaration represents a variable? 52 */ isVariable()53 default boolean isVariable() { 54 return false; 55 } 56 isEnumConstant()57 default boolean isEnumConstant() { 58 return false; 59 } 60 61 /** 62 * Does this declaration represents a method parameter? 63 */ isParameter()64 default boolean isParameter() { 65 return false; 66 } 67 68 /** 69 * Does this declaration represents a type? 70 */ isType()71 default boolean isType() { 72 return false; 73 } 74 75 /** 76 * Does this declaration represents a method? 77 */ isMethod()78 default boolean isMethod() { 79 return false; 80 } 81 82 /** 83 * Return this as a FieldDeclaration or throw an UnsupportedOperationException 84 */ asField()85 default ResolvedFieldDeclaration asField() { 86 throw new UnsupportedOperationException(String.format("%s is not a FieldDeclaration", this)); 87 } 88 89 /** 90 * Return this as a ParameterDeclaration or throw an UnsupportedOperationException 91 */ asParameter()92 default ResolvedParameterDeclaration asParameter() { 93 throw new UnsupportedOperationException(String.format("%s is not a ParameterDeclaration", this)); 94 } 95 96 /** 97 * Return this as a TypeDeclaration or throw an UnsupportedOperationException 98 */ asType()99 default ResolvedTypeDeclaration asType() { 100 throw new UnsupportedOperationException(String.format("%s is not a TypeDeclaration", this)); 101 } 102 103 /** 104 * Return this as a MethodDeclaration or throw an UnsupportedOperationException 105 */ asMethod()106 default ResolvedMethodDeclaration asMethod() { 107 throw new UnsupportedOperationException(String.format("%s is not a MethodDeclaration", this)); 108 } 109 asEnumConstant()110 default ResolvedEnumConstantDeclaration asEnumConstant() { 111 throw new UnsupportedOperationException(String.format("%s is not an EnumConstantDeclaration", this)); 112 } 113 } 114