2011-08-02 87 views
0

Java函數我有這個generi接口和類在用Java編寫的C#實現

public abstract class MyRootAbstractClass<W> 
{ 
} 

public abstract class MyDerivedAbstractClass<W extends MyRootFatherClass> 
{ 
} 

通知:MyRootFatherClass(在MyDeriveAbstractClass聲明)不要求提供通用型(<W>)。

是否有人知道如何將此代碼轉換爲C#?

+1

其實,你只有兩個通用的抽象類... – BoltClock

回答

5

我看來像:

public abstract class MyRootAbstractClass<T> 
{ 
} 

public abstract class MyDerivedAbstractClass<T> where T : MyRootFatherClass 
{ 
} 

where T : MyRootFatherClass是一個泛型類型約束,使你不能任意T類型創建MyDerivedAbstractClass<T> - 只有MyRootFatherClass和子類。

請注意,我已將W更名爲T以遵循.NET命名約定。

5

你可以使用一個generic constraint

public abstract class MyRootAbstractClass<W> 
{ 
} 

public abstract class MyDerivedAbstractClass<W> where W : MyRootFatherClass 
{ 
} 
+0

它不能編譯,它要求實現MyRootFatherClass時插入一個泛型類型(例如:MyRootFatherClass ) – Liran

+0

示例編輯:public abstract class MyDerivedAbstractClass 其中W:MyRootFatherClass .JAVA在聲明泛型類(MyRootFatherClass)爲約束時不要求聲明泛型類型。 – Liran