Wednesday, 22 September 2010

Examining interfaces using reflection

Class objects represent interfaces as well as classes. If you aren't sure whether a Class object represents an interface or a class, call the isInterface method.

You invoke Class methods to get information about an interface. To find the public constants of an interface, invoke the getFields method upon the Class object that represents the interface. The section Identifying Class Fields has an example containing getFields. You can use getMethods to get information about an interface's methods. See Obtaining Method Information. To find out about an interface's modifiers, invoke the getModifiers method. See Discovering Class Modifiers for an example.
By calling isInterface, the following program reveals that Observer is an interface and that Observable is a class:
import java.lang.reflect.*;
import java.util.*;

class SampleCheckInterface {

public static void main(String[] args) {
Class observer = Observer.class;
Class observable = Observable.class;
verifyInterface(observer);
verifyInterface(observable);
}

static void verifyInterface(Class c) {
String name = c.getName();
if (c.isInterface()) {
System.out.println(name + " is an interface.");
} else {
System.out.println(name + " is a class.");
}
}
}
The output of the preceding program is:
java.util.Observer is an interface.
java.util.Observable is a class.

No comments:

Post a Comment