2010-08-03 7 views
1

J'essaie d'ajouter des fonctionnalités à la classe Arrays. Dans mon projet j'utilise les méthodes (statiques) de Arrays et ai d'autres méthodes qui manipulent également la conversion de tableau, le tri, etc ...Extension de la classe Arrays en Java

J'essaye d'ajouter ceci à un objet MyArrays qui étend des tableaux ainsi je peut aller

MyArrays.toList(foo); 

mais aussi

MyArrays.myOwnFunction(bar); 

mais je ne suis pas en mesure d'étendre car les tableaux-contructor a un accès privé. Je sais que ce n'est pas vraiment nécessaire, mais maintenant je sais que je suis incapable de le faire, je le veux vraiment. Y a-t-il une solution de contournement pour cela?

merci,

+1

De quelle classe Arrays s'agit-il ici? Ni 'java.util.Arrays' ni' java.lang.reflect.Array' ne contiennent une méthode 'toList'. Cependant, étant donné que la version reflétée est 'final', vous ne pouvez pas l'étendre. Et puisque les deux classes sont constituées uniquement de méthodes 'static', avez-vous vraiment besoin d'étendre la classe? –

Répondre

6

Vous ne pouvez pas. Et pourquoi est-ce important que vous ayez les fonctions d'utilité dans une ou deux classes? Pour l'enregistrement - il y a ArrayUtils de commons-lang qui a des méthodes utilitaires supplémentaires.

Techniquement, vous pouvez réimplémenter toutes les méthodes de votre classe d'utilitaire en appelant simplement les méthodes correspondantes dans Arrays, mais cela n'est pas nécessaire.

+0

Et pourquoi pas vous? Je sais que son constructeur de def est 'private' donc vous ne pouvez physiquement pas étendre' Arrays', mais quel est le raisonnement derrière? – user3932000

0

Je vous suggère d'essayer d'utiliser la bibliothèque Trove4j. Cela a des collections qui prennent en charge les primitives a ajouté de nombreuses méthodes Arrays/Collections utiles, comme sort(). Ils peuvent également être prolongés.