9
votes

Comment puis-je supprimer le type générique de la classe en utilisant refactoring

J'ai cette classe:

public class TimeIntCo<T> extends TimeValueCo<Integer>
{

}


0 commentaires

6 Réponses :


1
votes

Je doute qu'il y ait un refacteur pour cela. Il suffit de supprimer le fichier , enregistrez le fichier et suivez et corrigez les erreurs de compilation pouvant résulter. (Si le paramètre t n'est pas utilisé, il ne devrait y avoir aucune erreur de compilation pour corriger ...)


@ohadshai Commentaires:

Puis j'ai environ 10 000 erreurs dans Eclipse ...

Je parie que la plupart d'entre eux peuvent être corrigés en modifiant un petit nombre de déclarations de sous-classe.

Connaissez-vous d'autres idées qui font cela? Idée?

Non, je ne le fais pas. Les refacteurs sont généralement utilisés pour des transformations simples qui préservent la signification du code source d'origine. Cette transformation est peu probable pour le faire.


1 commentaires

Connaissez-vous une autre IDE qui fait cela? IDÉE?



0
votes

Si t ne vous fournit aucun avantage, déposez-le de la déclaration de classe: xxx

Il peut rester en toute sécurité dans la classe mère Timevalueco . < / p>


1 commentaires

Oui, je pense que c'est correct. Ohadshai doit avoir une mauvaise utilisation des génériques.



1
votes

Comme le refactoring IDE de construction ne peut pas gérer ce que vous voulez, alors Si vous êtes ennuyé de la recherche manuelle / remplacée, cela fonctionnera

while read -r file; do 
    sed -i 's/TimeIntCo<[[:alpha:]]*>/TimeIntCo/g' "$file"; 
done < <(find /path/to/src/ -type f -iname "*.java")` 


0 commentaires

3
votes

Introduisez une superclasse xxx

et modifier timetinco pour l'étendre. xxx

puis utilisez le refacteur d'Eclipse -> Utilisez Superype dans la mesure du possible


1 commentaires

Ceci seulement des semi-oeuvres. Si vous n'avez qu'un seul paramètre générique, c'est OK, mais si vous avez plus d'un paramètre générique et que vous n'essayez d'utiliser que l'un d'entre eux, le paramètre générique doit avoir exactement le même nom partout, sinon Eclipse les gâche. Décevant.



3
votes

juste faire une trouvaille textuelle / remplacer timetinco -> TIMEINTCO sur toutes les classes Java.


0 commentaires

0
votes

Utiliser une recherche d'expression régulière et remplacer dans Eclipse (Recherche | Fichier): Recherche de: Someclass \ <. * \> et remplacer par: soméclass . Répétez les sous-classes si nécessaire.


0 commentaires