<< Chapter < Page | Chapter >> Page > |
Otherwise, a cast is required
In order to call any method other than one of the eleven methods in the above list , (on an object's reference being stored as type Object without using generics) , you must cast the reference to some other type.
Casting to an interface type
The exact manner in which you write the cast will differ from one situation to the next. In this case, the problem can be resolved by rewriting the programusing the interface cast shown in the following fragment.
void doIt(){
Object[]myArray = new Object[2];myArray[0] = new A();myArray[1] = new B();for(int i=0;i<myArray.length;i++){
((X)myArray[i]).intfcMethodX();
}//end for loopSystem.out.println("");
}//end doIt()
The observer design pattern
By implementing an interface, and using a cast such as this, you can store references to many different objects, of many different actual types, each ofwhich implements the same interface, but which have no required superclass-subclass relationship, in the same container. Then, when needed, youcan call the interface methods on any of the objects whose references are stored in the container.
This is a commonly used design pattern in Java, often referred to as the observer design pattern.
Registration of observers
With this design pattern, none, one, or more observer objects, (which implement a common observer interface) are registered on an observable object. This means references to the observer objects are stored in a container by theobservable object.
Making a callback
When the observable object determines that some interesting event has occurred, the observable object calls a specific interface method on each of theobserver objects whose references are stored in the container.
The observer objects execute whatever behavior they were designed to execute as a result of having been notified of the event.
The model-view-control (MVC) paradigm
In fact, there is a class named Observable and an interface named Observer in the standard Java library. The purpose of these class and interface definitionsis to make it easy to implement the observer design pattern.
(The Observer interface and the Observable class are often used to implement a programming style commonly referred to as the MVC paradigm.)
Delegation event model, bound properties of Beans, etc.
Java also provides other tools for implementing the observer design pattern under more specific circumstances, such as the Delegation Event Model, and inconjunction with bound and constrained properties in JavaBeans Components.
C. A-intfcMethodX B-intfcMethodX
More substantive use of an interface
This program illustrates a more substantive use of the interface than was the case in the previous programs.
The class named Base
The program defines a class named Base as shown in the following fragment.
class Base{
public void inherMethod(){System.out.print("Base ");
}//end inherMethod()}//end class Base
The interface named X
The program also defines an interface named X as shown in the next fragment. Note that this interface declares a method named intfcMethodX .
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?