[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [jdt-dev] get name of the anonymous class
|
Unfortunately, Java model elements don't work without the context of a Java project.
So, yes, it is unlikely to work for you.
Now, I am less hopeful of finding another way. These things (the anonymous names)
are decided much later in the compilation process and not sure DOM, which solely
works with source code has the capability to find that. May be others can correct me
if I am wrong.
Regards,
Jay
Alex Lovkov ---11/04/2019 02:46:47 PM---I just tried all methods which return something:) I read in docs: that if I don't use java-plugin, I
From: Alex Lovkov <charmik1994@xxxxxxxxx>
To: Jayaprakash Arthanareeswaran <jarthana@xxxxxxxxxx>
Cc: "Eclipse JDT general developers list." <jdt-dev@xxxxxxxxxxx>
Date: 11/04/2019 02:46 PM
Subject: Re: [jdt-dev] get name of the anonymous class
I just tried all methods which return something:)
I read in docs: that if I don't use java-plugin, I can specify ASTParser by unitName and Environment, but it didn't help me at all. .getJavaElement returns null anyway, from your code. So how can I get real name of anonymous class? Like Main$1$2 for example? Is it really possible? Thanks!
чт, 11 апр. 2019 г. в 06:41, Jayaprakash Arthanareeswaran <
jarthana@xxxxxxxxxx>:
I am surprised it returned non null for a source file. I thought the getBinaryName() will return
anything meaningful only for elements loaded as binaries.
Jay
Alex Lovkov ---10/04/2019 08:44:45 PM---I got name of the anonymous class by this: @Override
From: Alex Lovkov <charmik1994@xxxxxxxxx>
To: Jayaprakash Arthanareeswaran <jarthana@xxxxxxxxxx>
Cc: "Eclipse JDT general developers list." <jdt-dev@xxxxxxxxxxx>
Date: 10/04/2019 08:44 PM
Subject: Re: [jdt-dev] get name of the anonymous class
I got name of the anonymous class by this:
@Override
public boolean visit(AnonymousClassDeclaration node) {
ITypeBinding resolveBinding = node.resolveBinding();
String binaryName = resolveBinding.getBinaryName();
return true;
}
but it gives me wrong name for inner anonymous classes, example:
new Serializable() {
void x() {
new Serializable() {
};
}
};
it prints Main$1 Main$2, but it should be Main$1 and Main$1$1.
I get .getJavaElement()=null anyway. Can I fix it without ecpilse plugin? Thanks!
---------- Forwarded message ---------
От: Jayaprakash Arthanareeswaran <jarthana@xxxxxxxxxx>
Date: ср, 10 апр. 2019 г. в 05:43
Subject: Re: [jdt-dev] get name of the anonymous class
To: Eclipse JDT general developers list. <jdt-dev@xxxxxxxxxxx>
Cc: Александр Ловков <charmik1994@xxxxxxxxx>
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
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
--
С Уважением, Ловков А.С.
--
С Уважением, Ловков А.С.