 <p>maybe you think about such declaration (I think this is it):</p> <pre><code>public abstract class AbstractEventBuffer&lt;E extends BufferedEvent&lt;?&gt;&gt; </code></pre> <p>or:</p> <pre><code>public abstract class AbstractEventBuffer&lt;T, E extends BufferedEvent&lt;T&gt;&gt; </code></pre> <p>or</p> <pre><code>public abstract class AbstractEventBuffer&lt;E extends BufferedEvent&lt;? extends Object&gt;&gt; </code></pre> <p>or such:</p> <pre><code>public abstract class AbstractEventBuffer&lt;BufferedEvent&gt; { </code></pre> <p>?</p>