2012-11-21 80 views
5

我想實現下面的代碼創建不同的用戶定義的類泛型方法: 我有這樣的方法在Java

public String methodName(Userdefinedclass.class,Userdefinedclass obj) 
{ 

//some code 
......... 
method(Userdefinedclass.class); 
method2(obj); 

} 

我想概括這種方法。

挑戰在於這裏的參數是用戶定義的,即它可以改變。所以請幫助。

回答

6
public <T> String methodName(Class<T> c, T obj) 
{ 
    method1(c); 
    method2(obj); 

    return "some string"; 
} 

void method1(Class c) 
{ 
    // Some stuff. 
} 
+0

+1以前的解決方案是更好的:'Userdefinedclass1.class,Userdefinedclass obj' –

+0

感謝您的答覆,如果我要調用此函數是這樣的語法(例如:如果動物是我的類)methodName(Animal,Animal anim) – user1651070

0

如果要概括在函數中使用的參數,你可以創建一個空的接口,並迫使userDefinedClass實現它..或者你可以用T代表achiving這個

+0

非常感謝你 – user1651070

1

泛型是類型擦除如此您不能擁有泛型類型的.class。這是因爲泛型在這種情況下被擦除爲Object類型。因此`T.class'不會工作

所以改用Class<T>來獲取類,然後沿着

1

這樣可以使你的方法簽名的完整工作:

public <T> String methodName(Class<T> c, T obj) 
{ 
    method(c); 
    method2(obj); 
} 

,但我會用伊萬諾維奇的答案。如果用戶想通過兩個不同的paramerters像