// What did the compiler make of a compact source file? Ask the class itself. import java.lang.reflect.Modifier; import java.util.Arrays; public class Reflect { public static void main(String[] args) throws Exception { Class c = Class.forName("Hello"); IO.println("name : " + c.getName()); IO.println("final : " + Modifier.isFinal(c.getModifiers())); IO.println("public : " + Modifier.isPublic(c.getModifiers())); IO.println("package : '" + c.getPackageName() + "' (unnamed)"); IO.println("superclass : " + c.getSuperclass().getName()); IO.println("declared : " + Arrays.stream(c.getDeclaredMethods()).map(m -> m.toString()).sorted().toList()); IO.println("constructors: " + Arrays.toString(c.getDeclaredConstructors())); } }