There are things about the JavaLanguage that add some additional possibilities and/or limitations to what refactorings can and cannot be used.
Candidates...
- RefactorExtractInnerClass
- PromoteInnerClass
- DemoteToInnerClass
- using reflection in some way
Consider...
- RefactoringBrowserForJava -- asking if there is one; with example of a simple end-user supported one
- Request to IBM for a VisualAgeJavaRefactoringBrowser
Rules:
- ReplaceConditionalWithPolymorphism
- DefineConstantsInInterfaces
- EnumeratedTypesInJava (Use a class with static integers, as Java doesn't have "enum".)
- AvoidFinalStringsForUniqueTypes (An alternative EnumeratedTypesInJava implementation.)
- All of the standard RefactoringPatterns make sense in Java. Don't forget that Java was used for all the examples in the RefactoringBook.
Other: