Java: why Observer is NOT an interface

interface, java

Solution

`java.util.Observer` most definitely is an interface.

I suspect you've got an `Observer` class within the same package as `Client`, which would certainly cause that problem.

Complete examples:

This compiles fine:

import java.util.*;
import java.awt.*;
import java.awt.event.*;

class Client extends Button implements Observer, ActionListener {
    public void update(Observable x, Object y) {}
    public void actionPerformed(ActionEvent event) {}
}

This doesn't:

import java.util.*;
import java.awt.*;
import java.awt.event.*;

class Observer {} // Awooga! Awooga!

class Client extends Button implements Observer, ActionListener {
    public void update(Observable x, Object y) {}
    public void actionPerformed(ActionEvent event) {}
}

Problem

``` import java.util.*; import java.awt.*; import java.awt.event.*; import java.applet.Applet; class Client extends Button implements Observer, ActionListener{ ... } ``` with the code above, when i try to compile it with jdk (v 1.7.0_17) i get the following error: ``` error: interface expected here class Client extends Button implements Observer, ActionListener{ ^ ``` while on other computers it works (I've only checked it on 2 different linuxes) just fine. I'm using Windows 7 Professional 64-bit.

Original source