我正在尝试将返回的 Thread 对象从 Java 的 ThreadFactory.newThread(Runnable r) 转换为我的 Android 应用程序使用的 Thread 的特定子类,如下所示:
private ThreadFactory mvThreadSource = Executors.defaultThreadFactory();
...
//Invokes the thread factory's newThread(Runnable r) method
//mvThreadsVector is an ArrayList<BackgroundThread>
//class BackgroundThread extends Thread and implements an interface
public void spawnBGThreads(int numThreads){
for (int i=0;i<numThreads;i++){
mvThreadsVector.add((BackgroundThread) mvThreadSource.newThread(new
BackgroundThread()));
}
}
这会引发一个类转换异常,但我不知道为什么;我知道我似乎在尝试向下转换,这是无法完成的,但是 mvThreadSource.newThread(new BackgroundThread()) 返回的线程实际上应该是 BackgroundThread 的一个实例。据我了解,这应该使我在上面尝试的“向下转换”合法化(因为它不应该真正向下转换),但 Android 运行时(针对 SDK 修订版 17)不同意。上述演员阵容有什么违法之处?我应该使用什么替代方法(希望没有创建我自己的扩展 ThreadFactory 的 BackgroundThreadFactory 类)?