2012-04-20 1 views
1

Это, вероятно, вопрос с ослепительно очевидным ответом. Я просто не вижу этого и, вероятно, чувствую себя очень маленьким, когда кто-то ясно это укажет мне.Android Java.util.Arrays класс

Я использую Android на уровне Эклер MR1, так что мой Android Manifest имеет:

<uses-sdk android:minSdkVersion="7" /> 

В моей MainActivity, у меня есть байт [], что я хочу, чтобы перераспределить до большего размера.

Java SE 6 имеет класс java.util.Arrays со статическими методами для этого для каждого элементарного типа. Я могу видеть, что класс документированного в андроиде документации на http://developer.android.com/reference/java/util/Arrays.html#copyOf%28byte[],%20int%29

Вот мой код:

byte [] padToLength (byte[] plain) { 

    try{ 
     byte[] plainpad2 = java.util.Arrays.copyOf(plain, plain.length+10); //why won't this compile? 
    } catch (Exception e) { 

    } 

Но когда я использую это, я получаю ошибку компиляции в Eclipse, говоря «метод copyOf (байты [] , целое) не определено для массивы типа.

Может кто-нибудь предложить, что я делаю неправильно?

+0

Какой у вас целевой SDK? Вы пробовали строить с помощью sdk версии 9? Если метод доступен с API 9, то вам нужно будет создать его или позже? –

+1

@Peter vdL: Возможно, вы можете использовать статический метод ['System.arraycopy (Object src, int srcPos, Object dst, int dstPos, int length)'] (http://developer.android.com/reference/java/ lang/System.html # arraycopy% 28java.lang.Object,% 20int,% 20java.lang.Object,% 20int,% 20int% 29) вместо. –

ответ

1

Arrays.copyOf(byte[], int) не определен для уровня API 7. на этой ссылке вы предоставили, загляните в верхнем правом углу и вы увидите флажок который говорит «Filter By API Level». Выбор 7 удаляет этот метод.

Почему вы все равно работаете с массивами? В Java вы почти всегда должны использовать ArrayList, если у вас нет проблем с производительностью. В этом случае вам не нужно беспокоиться о размере вашего массива. Если ваша функция должна принять параметр byte[], тогда я бы предложил вызвать что-то вроде List<Byte> myList = Arrays.asList(plain).

+0

Ты и МХ прибили его, и я чувствую себя достаточно маленьким. Этот API появился с уровнем API 9. Спасибо! Как вы уже догадались, производительность является главным приоритетом, поэтому я работаю с массивами атомных типов. –

Смежные вопросы