Je rencontre un problème en utilisant la méthode générique
Classe compilée:
public class Something<T> {
public static Something newInstance(Class<T> type){};
public <T> void doSomething(T input){};
}
et ma méthode est:
public <S> void doOtherThing(S input){
Something smt = Something.newInstance(input.getClass());
smt.doSomething(input); // Error here
}
Il y a eu une erreur lors de la compilation:
aucune méthode appropriée trouvée pour doSomething (T) T ne peut être convertie en capture n ° 1 de? étend Java.lang.Object ...
Je pense qu'il pourrait y avoir un truc pour éviter ça, aidez s'il vous plaît
Je pense que input.getClass()
doit être converti en Class<T>
public <S> void doOtherThing(S input){
Something smt = Something.newInstance((Class<T>)input.getClass());
smt.doSomething(input);
}
Passez la classe S en argument.
public class Something<T>
{
public static <T> Something<T> newInstance(Class<T> type)
{
return new Something<T>();
}
public void doSomething(T input){;}
public <S> void doOtherThing(Class<S> clazz, S input)
{
Something<S> smt = Something.newInstance(clazz);
smt.doSomething(input);
}
}
Quelque chose comme ça? (chose générique de déclaration de type sur notre méthode newInstance)
public class Something<T> {
public static <T> Something<T> newInstance(Class<T> type){ return null; }
public <T> void doSomething(T input){};
}