這個C#聲明在Java中等價於什麼?什麼是C#通用約束的Java等價物「T,K:其中T:它<K>」?
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#中,它是:在Java中
T asyncThread = default(T);
asyncThread.StartAsyncRequest()
'T asyncThread = default(T);':這行會給你一些麻煩。由於Java通過擦除實現泛型,因此它不知道'T'在運行時的類型。 – StriplingWarrior 2012-08-10 15:07:13
如果你真的需要創建一個'T'的實例,你必須以某種方式傳遞'Class'的參數來創建這個新對象。 –
atamanroman
2012-08-10 15:10:33
當在泛型中使用'extends'時,如果T'擴展'或'實現'後面的類/接口並不重要。關鍵字仍然是「擴展」。 – 2012-08-10 15:11:08