2012-11-21 6 views

Odpowiedz

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 poprzednie rozwiązanie było lepsze, jeśli użytkownik chce przekazać dwa różne parametry, takie jak: 'Userdefinedclass1.class, Userdefinedclass obj' –

+0

dzięki za odpowiedź, jeśli mam do wywołania tej funkcji, jest to składnia (np .: jeśli Animal jest moim class) methodName (Animal, Animal anim) – user1651070

0

Jeśli chcesz uogólniać parametrów używanych w funkcji można utworzyć pusty interfejs i zmusić userDefinedClass wdrożyć go .. Albo można użyć T dla achiving ten

+0

dziękuję wszystkim bardzo – user1651070

1

Generics jest więc typ wymazywania nie możesz mieć .class typu Generic. To dlatego, że generics są kasowane w tym przypadku do typu Object. Stąd `przyzwyczajenie praca T.class'

Więc zamiast używać Class<T> uzyskać klasę, a następnie pracować razem

1

Dzięki temu metoda podpis nienaruszone:

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

ale chciałbym wykorzystać odpowiedź Ivanovic jest.

Powiązane problemy