【发布时间】:2023-03-11 04:32:01
【问题描述】:
这个 C# 声明在 Java 中的等价物是什么?
public class AsyncThreadPool<T, K> where T : IAsyncThread<K> {
而IAsyncThread是一个接口
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 asyncThread = default(T);:这条线会给你带来一些麻烦。由于 Java 实现了带擦除的泛型,它在运行时不知道T是什么类型。 -
如果您确实需要创建
T的实例,则必须以某种方式传递Class<T>的参数才能创建该新对象。 -
当在泛型中使用
extends时,Textends或implements后一个类/接口并不重要。关键字仍然是extends。
标签: c# java generics equivalent