19528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggenpackage com.github.javaparser.ast.nodeTypes; 29528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen 39528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggenimport java.util.List; 49528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen 59528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggenimport com.github.javaparser.ast.Node; 69528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggenimport com.github.javaparser.ast.type.ClassOrInterfaceType; 79528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen 89528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggenpublic interface NodeWithImplements<T> { 99528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen public List<ClassOrInterfaceType> getImplements(); 109528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen 119528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen public T setImplements(List<ClassOrInterfaceType> implementsList); 129528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen 139528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen /** 149528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen * Add an implements to this 159528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen * 169528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen * @param name the name of the type to extends from 179528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen * @return this 189528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen */ 199528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen @SuppressWarnings("unchecked") 209528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen public default T addImplements(String name) { 219528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen ClassOrInterfaceType classOrInterfaceType = new ClassOrInterfaceType(name); 229528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen getImplements().add(classOrInterfaceType); 239528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen classOrInterfaceType.setParentNode((Node) this); 249528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen return (T) this; 259528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen } 269528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen 279528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen /** 289528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen * Add an implements to this and automatically add the import 299528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen * 309528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen * @param clazz the type to implements from 319528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen * @return this 329528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen */ 339528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen public default T addImplements(Class<?> clazz) { 349528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen ((Node) this).tryAddImportToParentCompilationUnit(clazz); 359528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen return addImplements(clazz.getSimpleName()); 369528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen } 379528039468accca4734ee3b35670bd1d52369e4cDanny van Bruggen} 38