Java - Get reference to a static class using reflection

14,065

Solution 1

Have you tried referring to the nested class as

MyMainClass$SalesObjectGrouper1

Nested classes are internally named ContainingClassName$NestedClassName

Solution 2

To avoid hacks in the mapping of Java language classes on to the Java runtime classes, you could use Class.getDeclaredClasses. Using reflection is often a mistake. Dealing with nested classes does not seem to be a good sign.

Share:
14,065
Andez
Author by

Andez

Updated on July 16, 2022

Comments

  • Andez
    Andez almost 2 years

    In Java, is it possible to access an instance of a static class (nested) using reflection?

    Supposing I have the following 2 classes defined in the package Package1.SubPackage.SubSubPackage:

    public class MyMainClass {  
       public static class SalesObjectGrouper1 {  
          public static final GrouperContext CONTEXT = new GrouperContext("MyDate");  
       }  
    
       private static class SalesObjectGrouper2 {  
          public static final GrouperContext CONTEXT = new GrouperContext("MyDate");  
       }  
    }  
    

    If I run the following code:

    try {
         xyz = Class.forName( "Package1.SubPackage.SubSubPackage.MyMainClass.SalesObjectGrouper1" );
    } catch( ClassNotFoundException ex ) {
         // always hit the error
    }
    

    it will error indicating class cannot be found. Can this be done?