Community
Participate
Working Groups
The New Class wizard fails to produce a correct class if the class implements and inner interface of another class. Steps to reproduce: 1. Use the wizard to create a new class Foo that implements the org.eclipse.ui.actions.ActionFactory.IWorkbenchAction interface. You need to use the "Add" button to select the interface. 2. After selecting the interface the type in the "Interfaces" text field is "org.eclipse.ui.actions.ActionFactory$IWorkbenchAction" and not "org.eclipse.ui.actions.ActionFactory.IWorkbenchAction". 3. Selecting "Finish" at this point will produce and incorrect class and the appropriate methods that should have been provided from the interface are not in the Foo class. However, if you replace the '$' with a '.' before hitting "Finish" then the class will be created correctly.
TypeNameMatch.getFullyQualifiedName() return the $ in the name, which is against its spec. A JDK-only example of this is java.util.Map.Entry. [JDT/UI's call is in SuperInterfaceSelectionDialog.addSelectedInterface().]
TypeNameMatch.getFullyQualifiedName() relies on IType same method => as said in bug 156168 comment 2: For binary types, this is the name of the class file without the ".class" suffix. ... * <li>the type qualified name of a binary type whose class file is A$B.class * using the '$' separator is "A$B"</li> *** This bug has been marked as a duplicate of bug 156168 ***
Sorry, previous comment should read: * <li>the type qualified name of a binary type whose class file is A$B.class * using the '.' separator is "A$B"</li>
Not a dup of bug 156168, but a dup of bug 182179
*** This bug has been marked as a duplicate of bug 182179 ***
Verified for 3.4M6 using build I20080324-1300