String qualifiedTypeName(TypeMirror type) { TypeVisitor<Name, Void> v = new SimpleTypeVisitor8<Name, Void>() { @Override public Name visitArray(ArrayType t, Void p) { return t.getComponentType().accept(this, p); } @Override public Name visitDeclared(DeclaredType t, Void p) { return ((TypeElement) t.asElement()).getQualifiedName(); } @Override public Name visitPrimitive(PrimitiveType t, Void p) { return elems.getName(t.toString()); } @Override public Name visitNoType(NoType t, Void p) { if (t.getKind() == TypeKind.VOID) return elems.getName("void"); return defaultAction(t, p); } @Override public Name visitTypeVariable(TypeVariable t, Void p) { return t.getUpperBound().accept(this, p); } }; return v.visit(type).toString(); }
@Override public <R, P> R accept(TypeVisitor<R, P> typeVisitor, P p) { return typeVisitor.visitError(this, p); }
public <R, P> R accept(TypeVisitor<R, P> v, P p) { return v.visitExecutable(this, p); }
@Override public <R, P> R accept(TypeVisitor<R, P> v, P p) { return v.visitTypeVariable(this, p); }
/* (non-Javadoc) * @see javax.lang.model.type.TypeMirror#accept(javax.lang.model.type.TypeVisitor, java.lang.Object) */ @Override public <R, P> R accept(TypeVisitor<R, P> v, P p) { return v.visitArray(this, p); }