Java中与此C#声明等效的内容是什么?
public class AsyncThreadPool<T, K> where T : IAsyncThread<K> {
IAsyncThread
是一个接口(interface)public interface IAsyncThread<T>
{
T GetAsyncUsedObject();
void StartAsyncRequest();
}
我试过了 :
public class AsyncThreadPool<T extends IAsyncThread<K>, K >
但是不正确,因为T实现
IAsyncThread<K>
不能扩展它。我需要在此类中使用
T.StartAsyncRequest()
或类似代码在C#中,它是:
T asyncThread = default(T);
asyncThread.StartAsyncRequest()
最佳答案
您的<T extends IAsyncThread<K>>
是正确的。即使类本身实现而不是扩展,泛型定义的术语也是扩展的。如果需要,可以使用<T extends Object & IAsyncThread<K>>
或<T extends Object, IAsyncThread<K>>
,但不必要。
对于创建类型T的成员,您真正掌握的唯一一件事就是使用工厂对象。
public class AsyncThreadPool<T extends IAsyncThread<K>, K> {
private final AsyncThreadFactory<T> factory;
public ASyncThreadPool(AsyncThreadFactory<T> factory) {
this.factory = factory;
}
public void foo() {
T t = factory.createDefault();
t.startAsyncRequest();
}
}