[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| Re: [jdt-dev] get name of the anonymous class | 
One way of achieving that is by using Java model elements, like below:
                @Override
                public boolean visit(AnonymousClassDeclaration node) {
                        ITypeBinding resolveBinding = node.resolveBinding();
                        IType javaElement = (IType) resolveBinding.getJavaElement();
                        System.out.println(javaElement.getFullyQualifiedName());
                        return true;
                }
Jay
 "Александр Ловков" ---09/04/2019 10:59:12 PM---Hello, I was wondering how can I get the name of the anonymous class (exactly "$1", or Main$1) from
"Александр Ловков" ---09/04/2019 10:59:12 PM---Hello, I was wondering how can I get the name of the anonymous class (exactly "$1", or Main$1) from
From:        "Александр Ловков" <charmik1994@xxxxxxxxx>
To:        jdt-dev@xxxxxxxxxxx
Date:        09/04/2019 10:59 PM
Subject:        [jdt-dev] get name of the anonymous class
Sent by:        jdt-dev-bounces@xxxxxxxxxxx
Hello, I was wondering how can I get the name of the anonymous class (exactly "$1", or Main$1) from AST, after I parse my source file?
If I try to get the name of the class going recursive to the root from the variable, I don't get FieldDeclaration -> TypeDeclaration as in normal (Z) class, I get the next one: FieldDeclaration -> AnonymousClassDeclaration -> ClassInstanceCreation
and AnonymousClassDeclaration doesn't have any getName() methods. 
So how can I get "$1" by AnonymousClassDeclaration/ClassInstanceCreation? thanks!
example:
public class Main {
    void f() {
        new Serializable() {
            public static final String T1 = "T1";
        };
    }
    private class Z implements Serializable {
        public static final String T2 = "T2";
    }
}ASTParser parser = ASTParser.newParser(AST.JLS11);parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(new String(Files.readAllBytes(Paths.get(
        "src/main/java/Main.java"))).toCharArray());
CompilationUnit unit = (CompilationUnit) parser.createAST(new NullProgressMonitor());
ArrayList<FieldDeclaration> fields = new ArrayList<>();
unit.accept(new ASTVisitor() {
    @Override
    public boolean visit(final FieldDeclaration node) {
        fields.add(node);
        return super.visit(node);
    }
});
FieldDeclaration fieldDeclaration_T1 = fields.get(0);
FieldDeclaration fieldDeclaration_T2 = fields.get(1);
ASTNode T1parent = fieldDeclaration_T1.getParent(); //AnonymousClassDeclaration here (can't get $1)
ASTNode T2parent = fieldDeclaration_T2.getParent(); //TypeDeclaration here. can use .getName() to get a name of nested class) cl-- 
Sincerely, Alex_______________________________________________
jdt-dev mailing list
jdt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jdt-dev