7
votes

Impossible d'utiliser des tableaux.copyofrange

Je ne semble pas être capable d'accéder aux tableaux.copyofrange dans mon projet Android à Eclipse Indigo 3.7.1 sur Ubuntu 11.10.

My Jre est Java-6-OpenJDK, que je pensais inclus des tableaux.copyofrange

Par exemple, si j'ai ce code: xxx

Eclipse me dit

La méthode CopyOfrange (int [], int, int) est indéfini pour le type Tableaux

Je ne comprends pas parce que la référence Android Les tableaux Comprend cette méthode pour les tableaux.

Des idées?


2 commentaires

Yikes, A -1. Si vous êtes le -1 électeur, veuillez expliquer. Merci.


@slayton OK, j'ai ajouté du code. Veuillez reconsidérer les votes de -1. Merci.


3 Réponses :


-2
votes

Arrays.CopyOfrange a été introduit dans la classe de tableaux avec Java 6. Android est basé sur Java 5. Vous ne pouvez pas utiliser Java 6 méthodes ou classes avec Android.


2 commentaires

Merci Stefan, mais je ne comprends pas pourquoi il est inclus dans la page Web de référence Android Android Tableaux


Si c'est dans l'Android Docs, alors sa prise en charge par le Dalvik VM, mais il peut ne pas être présent dans tous les niveaux d'API



7
votes

La méthode arrayes.copyofrange () n'a pas été introduite tant que le niveau d'API 9 . Assurez-vous que vous utilisez cela comme minimum SDK.

En outre, vous indexez de manière incorrecte. En Java si vous avez une matrice de taille 5 la plage des indices de 0-> 4

changez votre code à ceci: < Pré> xxx


8 commentaires

@SLATON: Merci, j'ai changé le code dans mon exemple, mais le problème est que la méthode n'est même pas reconnue, quelle que soit votre valeur que j'utilise.


Les méthodes CopyOfrange n'ont pas été introduites dans le SDK Android jusqu'au niveau de l'API 9. Si vous souhaitez utiliser ces méthodes, vous devez configurer votre niveau d'API en conséquence. Vous pouvez également écrire votre propre méthode de copie de tableau.


merci oui maintenant je vois. Je pense que ce n'était pas une solution évidente et que cette question ne justifie plus les votes, alors s'il vous plaît envisagez de voter.


J'ai oublié de mentionner: je ne sais pas comment cela fonctionne, mais si vous devez mettre à jour le texte de votre réponse avec le point que vous avez effectué dans votre commentaire sur le niveau de l'API afin que je puisse l'accepter? Merci.


@aez ok, je l'ai ajouté à la réponse


Oui, des tableaux.copyofrange n'existent pas dans les niveaux d'API Android <9. Code .google.com / p / Android / Problèmes / Détail? ID = 10054


Mais vous pouvez implémenter la fonction CopyOfrange, voir Stackoverflow.com/a/7970678/1173350


Agréable. Android à l'aide de Java 1.6, où la méthode CopyOfrange a été ajoutée, a eu la classe de tableaux depuis la SDK 1, mais vous avez besoin de SDK 9 de toute façon.



4
votes

Si vous devez utiliser une API de plus de 9, System.ArrayCopy et Math.Min a été ajouté au niveau 1 de l'API 1, vous pouvez donc copier la fonction CopyOf et l'utiliser dans votre code.

public static byte[] copyOf(byte[] original, int newLength) {
    byte[] copy = new byte[newLength];
    System.arraycopy(original, 0, copy, 0,
                     Math.min(original.length, newLength));
    return copy;
}


0 commentaires