2014-02-19 4 views
-1

мой вопрос: Могут ли переменные в методе Java вызова как в этом примере:переменные могут вызвать методы в языке Java

private void test(Rabbit rabbit, byte[] key, byte[] iv, byte[] data) { 

    byte[] crypt = rabbit.crypt(data.clone());} 

, как я знаю, данные есть переменная, и это вызывает метод Clone(). переменная данных или нет.

+3

В java есть два типа: примитивные типы и ссылочные типы. Вы можете использовать методы только для переменных ссылочных типов. –

ответ

1

В этом примере данные могут вызывать метод clone, поскольку данные являются объектом класса byte [], который создается JVM, поскольку он может вызвать метод clone.

0

Ваш настоящий вопрос здесь, кажется, заключается в том, поддерживает ли объекты массива Java метод .clone().

Ответ на этот вопрос да. Все массивы Java реализуют Cloneable, и поэтому метод .clone() будет работать правильно. См. Why clone method is allowed on Array?.

Обратите внимание, что это будет «мелкий» клон. Это не имеет значения для примитивов, но для объектов это означает, что клон будет содержать ссылки на те же объекты, что и оригинал, а не на клоны этих объектов.

0

Здесь тип данных переменной data - это массив. В Java Array рассматривается как тип объекта. Таким образом, вы можете использовать data.length и data.clone() как действительные заявления.

length является переменной (типа int) в Array объекта и clone() является метод Object класса (который является супер класс всех классов в Java)

0

Ну ... вы смотрите на неправильный символ. Короткий ответ: «Это зависит».

В Java есть два типа вещей:

  • примитивы, которые только занимают сырое численное значение (в случае char, часто способны быть распечатаны), и
  • Объекты, которые могут не только удерживать значения, но также выполнять вызовы методов и доступ к информации о экземпляре.

data фактически byte[] и типы массивов являются особенными в том, что они are an Object, но не экземпляром класса. Тем не менее, есть несколько вещей, которые у него есть - clone(), начиная с arrays implement Cloneable и всех методов, которые находятся на Object, от которых он наследуется.

В сущности, вы можете вызывать методы только для объектов, но не для примитивов.

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