Monday, March 5, 2012

How do I get direct superclass and interfaces of a class in Java?


Java reflection also dealing with inheritance concepts. You can get the direct interfaces and direct superclass of a class by using method getInterfaces() and getSuperclass() ofjava.lang.Class object.
    1.getInterfaces() will returns an array of Class objects that represent the direct super interfaces of the target Class object
    2.getSuperclass() will returns the Class object representing the direct super class of the targetClass object or null if the target represents Object class, an interface, a primitive type, or void.

    import javax.swing.*;
    import java.util.Date;
    
    public class GetSuperClassDemo {
        public static void main(String[] args) {
            GetSuperClassDemo.get(String.class);
            GetSuperClassDemo.get(Date.class);
            GetSuperClassDemo.get(JButton.class);
            GetSuperClassDemo.get(Timer.class);
        }
    
        public static void get(Class clazz) {
            //
            // Gets array of direct interface of clazz object
            //
            Class[] interfaces = clazz.getInterfaces();
    
            System.out.format("Direct Interfaces of %s:%n",
                    clazz.getName());
            for (Class clz : interfaces) {
                System.out.println(clz.getName());
            }
    
            //
            // Gets direct superclass of clazz object
            //
            Class superclz = clazz.getSuperclass();
            System.out.format("Direct Superclass of %s: is %s %n",
                    clazz.getName(), superclz.getName());
            System.out.println("====================================");
        }
    }
Below is the output...
    Direct Interfaces of java.lang.String:
    java.io.Serializable
    java.lang.Comparable
    java.lang.CharSequence
    Direct Superclass of java.lang.String: is java.lang.Object 
    ====================================
    Direct Interfaces of java.util.Date:
    java.io.Serializable
    java.lang.Cloneable
    java.lang.Comparable
    Direct Superclass of java.util.Date: is java.lang.Object 
    ====================================
    Direct Interfaces of javax.swing.JButton:
    javax.accessibility.Accessible
    Direct Superclass of javax.swing.JButton: is javax.swing.AbstractButton 
    ====================================
    Direct Interfaces of javax.swing.Timer:
    java.io.Serializable
    Direct Superclass of javax.swing.Timer: is java.lang.Object 
    ====================================

No comments:

Post a Comment