There is some external and internal class
public class OuterClass { int a = 20; public class InnerClass { String name1="123!!!";}} And the implementation in main
OuterClass obj = new OuterClass(); Class[] classes = obj.getClass().getDeclaredClasses(); for(Class innerClass: classes){ System.out.println(innerClass.getName()); Field[] fields = innerClass.getDeclaredFields(); for(Field field : fields){ System.out.println(field.getName()); try { System.out.println(field.get(innerClass)); //<-----IllegalArgumentException } catch (IllegalAccessException e) { e.printStackTrace(); } } } How to get field values of an inner class without making them static?