If you examine the collection of Buffer classes in the standard JDK you will notice that each specialization (ByteBuffer, CharBuffer, DoubleBuffer etc) each have their own static allocate
method defined. There is a reason they do not all inherit from a common base class - static methods are not inherited! Instead they are associated with the class in which they are defined and only have access to class level variables.
A better pattern for what you are trying to accomplish is the builder/factory pattern. You can examine the JAX-RS Response
class, or DocumentBuilderFactory classes for examples on how to implement these patterns.