Download the JDK
Search the Tutorials
Hide the TOC
Trail: The Reflection API
Lesson: Examining Classes
Examining Classes
Retrieving Class Objects
Getting the Class Name
Discovering Class Modifiers
Finding Superclasses
Identifying the Interfaces Implemented by a Class
Examining Interfaces
Identifying Class Fields
Discovering Class Constructors
Obtaining Method Information
Home Page > The Reflection API > Examining Classes
« Previous • Trail • Next »
Identifying the Interfaces Implemented by a Class

> The type of an object is determined by not only its class and superclass, but also by its interfaces. In a class declaration, the interfaces are listed after the `implements` keyword. For example, the `RandomAccessFile` class implements the `DataOutput` and `DataInput` interfaces:

> >     public class RandomAccessFile implements DataOutput, DataInput

> You invoke the `getInterfaces` method to determine which interfaces a class implements. The `getInterfaces` method returns an array of `Class` objects. The reflection API represents interfaces with `Class` objects. Each `Class` object in the array returned by `getInterfaces` represents one of the interfaces implemented by the class. You can invoke the `getName` method on the `Class` objects in the array returned by `getInterfaces` to retrieve the interface names. To find out how to get additional information about interfaces, see the section Examining Interfaces.

> The program that follows prints the interfaces implemented by the `RandomAccessFile` class.

> >     import java.lang.reflect.*;
> >     import java.io.*;

> >     class SampleInterface {

> >        public static void main(String[] args) {
> >           try {
> >               RandomAccessFile r = new RandomAccessFile("myfile", "r");
> >               printInterfaceNames(r);
> >           } catch (IOException e) {
> >               System.out.println(e);
> >           }
> >        }

> >        static void printInterfaceNames(Object o) {
> >           Class c = o.getClass();
> >           Class[] theInterfaces = c.getInterfaces();
> >           for (int i = 0; i < theInterfaces.length; i++) {
> >              String interfaceName = theInterfaces[i].getName();
> >              System.out.println(interfaceName);
> >           }
> >        }
> >     }

> Note that the interface names printed by the sample program are fully qualified:

> >     java.io.DataOutput
> >     java.io.DataInput

« Previous • Trail • Next »
Previous page: Finding Superclasses
Next page: Examining Interfaces