为不同的Buffer类定义了API调用:
apicall(ByteBuffer buffer);
apicall(FloatBuffer buffer);
apicall(IntBuffer buffer);
apicall(LongBuffer buffer);
apicall(DoubleBuffer buffer);
我需要编写一些使用它的类,但是我想使用泛型类而不是编写五个类。
MyClass<T extends Buffer> ...
问题是,没有为每个缓冲区定义apicall(),即不为CharBuffer定义。
myMethod(T buffer) {apicall(buffer);}
失败。我的解决方法是这样的:
if (buffer instanceof FloatBuffer) {
apicall((FloatBuffer)buffer);
} else if (buffer instanceof ByteBuffer) {
apicall((ByteBuffer)buffer);
} else ...
我对此并不满意。我的问题是,如果有更好的方法来解决我的问题。