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