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();
    }
}

09-29 22:42