2017-05-15 39 views
4

我對某些事情不確定。.Net vs Java中的靜態泛型方法

在C#中,我可以執行以下操作。

public class Helper<T> where T : new() 
{ 
    public static T SomeHelperFunction(string strValue) 
    { 
     return new T(); 
    } 
} 

在這裏,靜態方法可以清楚地使用傳遞給Helper類的類型。

這是我用Java/Android的

public class Helper<T> { 
    public static T SomeHelperFunction(String strValue){ 
     //some code 
    } 
} 

Java的確切嘗試抱怨在SomeHelperFunction使用的噸。爲什麼.Net允許這個,但不是Java,或者我錯過了什麼?

如何在Java中創建.Net類?

+1

怎麼樣'公共靜態 T SomeHelperFunction(String strValue)'?請參閱https://docs.oracle.com/javase/tutorial/extra/generics/methods.html。 – HimBromBeere

+0

如果你還包含你得到的確切的錯誤信息,這將有所幫助。 –

回答

4

你可以做到這一點

public class Helper<T> { 
public static <T> T SomeHelperFunction(String strValue){ 
    //some code 
} 
} 

在Java中,靜態泛型方法需要自己的通用聲明;

+0

如果我將該類型傳遞給Helper類,那麼會根據靜態方法自動推斷出類型? –

+0

在這種情況下不需要'class Helper '只是'class Helper' – khelwood

+1

@khelwood這個問題明確地涉及泛型類型參數是否從類本身繼承,所以儘管在這個例子中它並不是真的需要它適合問題設置。 – HimBromBeere