我想實現下面的代碼創建不同的用戶定義的類泛型方法: 我有這樣的方法在Java
public String methodName(Userdefinedclass.class,Userdefinedclass obj)
{
//some code
.........
method(Userdefinedclass.class);
method2(obj);
}
我想概括這種方法。
挑戰在於這裏的參數是用戶定義的,即它可以改變。所以請幫助。
我想實現下面的代碼創建不同的用戶定義的類泛型方法: 我有這樣的方法在Java
public String methodName(Userdefinedclass.class,Userdefinedclass obj)
{
//some code
.........
method(Userdefinedclass.class);
method2(obj);
}
我想概括這種方法。
挑戰在於這裏的參數是用戶定義的,即它可以改變。所以請幫助。
public <T> String methodName(Class<T> c, T obj)
{
method1(c);
method2(obj);
return "some string";
}
void method1(Class c)
{
// Some stuff.
}
泛型是類型擦除如此您不能擁有泛型類型的.class。這是因爲泛型在這種情況下被擦除爲Object
類型。因此`T.class'不會工作
所以改用Class<T>
來獲取類,然後沿着
這樣可以使你的方法簽名的完整工作:
public <T> String methodName(Class<T> c, T obj)
{
method(c);
method2(obj);
}
,但我會用伊萬諾維奇的答案。如果用戶想通過兩個不同的paramerters像
+1以前的解決方案是更好的:'Userdefinedclass1.class,Userdefinedclass obj' –
感謝您的答覆,如果我要調用此函數是這樣的語法(例如:如果動物是我的類)methodName(Animal,Animal anim) – user1651070