我有一个实现“可运行”以从数据流中读取数据的类。数据来自Channel
作为成员变量存储在我的另一个类中的 a,我可以通过简单地调用 getter 来获取此通道的实例getInputChannel()
。现在,为了让我Runnable
从通道中读取数据,它需要知道它是什么类型的通道,以便它可以使用通道的read
方法。通道类型可以是FileChannel
或之一SocketChannel
,并且在运行时决定,即
private class ReadInputStream implements Runnable {
Thread thread;
boolean running = true;
ByteBuffer buffer = ByteBuffer.allocate(1024);
FileChannel or SocketChannel channel;
public ReadInputStream() {
// Need to cast type channel at run time
Channel ch = getInputChannel();
this.channel = (FileChannel or SocketChannel) ch;
}
public void run() {
while (running) {
channel.read(buffer);
// etc.
}
}
}
获得正确类型的通道以便我可以read
在可运行的run()
方法中实现其方法的最佳方法是什么?