Calls to next() on abstract class that implements Iterator<E> returns Object instead of E
===

I have a class with the following definition:

    public abstract class A implements Iterator<B> {}

The following call to next() will return an Object rather than a B:

    A a = new SomethingThatExtendsA();
    a.next();

I've searched for quite awhile and haven't been able to figure out why this call to next() returns an Object instead of a B. Is anyone able to describe this behavior for me?