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