2013-11-18 4 views
3

В Java вы можете сделать следующее:Что означает новый Object [] {} в Java?

new Object[] { /* parameters separated by comma */}; 

Действительно, это используется в подготовленных заявлений в рамках Spring. Например:

getJdbcTemplate().queryForList(
    "DELETE FROM foo WHERE id = ?", //the "?" mark will be substituted by "3" 
    new Object[] { 3 }, //What kind of magic is this? 
    String.class //Irrelevant in this example 
); 
  • Как это называется?
  • Что там происходит?
  • Как вы можете получить доступ к этим параметрам?
+0

Вы инициализируете массив в фигурных скобках ('{}'). В этом случае с 'Integer' 3. – Danny

ответ

9
Object[] objs = new Object[]{3,4}; 

так же, как:

Object[] objs = new Object[2]; 
objs[0] = 3; 
objs[1] = 4; 

Таким образом, вы получить доступ к нему, как OBJS [0];

+3

Массивы не имеют способа добавить. Я думаю, вы хотели иметь список .... Или 'objs [0] = 3; objs [1] = 4; ' – Danny

+0

@ Дэнни, ты прав. Благодарю. – Deniz

1

new Object[] { /* parameters separated by comma */};

Создает анонимный массив Object

Параметры, разделенные запятой являются элементами массива.

Количество элементов является length массива

+0

Я уверен, что анонимные классы имеют' $ id' (где 'id' is number) в конце своего имени класса, но я не вижу эту часть в« анонимных массивах », , Также я не могу найти этот термин в официальном учебнике по Java. У вас есть несколько ссылок Где я могу узнать больше о них? Может быть, спецификация языка Java? – Pshemo

+0

@Pshemo может быть [это] (http://javarevisited.blogspot.in/2012/01/anonymous-array-example-java-create.html) и [это] (http://www.coderanch.com/ t/411624/java/java/Анонимные массивы). – Nishant

+0

Я видел это, но я бы предпочел официальные источники. В любом случае спасибо за googling :) – Pshemo

4

Он используется для инициализации массива Object со значением индекса 3 на 0.

0

Создает анонимный массив объекта.

new Object[] { /* parameters separated by comma */}; 

инициализировать массив со значением 3 с индексом 0

new Object[] { 3 } 

Последний пример такой же, как:

Object[] obj = new Object[1]; 
objs[0] = 3; 
+0

Умм ... массивы не имеют метода 'add' в Java. –

+0

@ StephenC Да, вы правы. Благодаря! –

0

Код нового объекта [] {/ * Параметры разделенных по запятой * /}; например new String[] {"a","b", "c"} создает 3 объекта типа String.

3

Вы спросили об этом:

new Object[] { 3 } 

Как и другие ответы уже говорили, он создает и инициализирует массив объектов, который будет принят в качестве параметра метода queryForList.

фактический тип массива будет Object[], его длина будет 1, а ее первый элемент будет Integer объекта ... производствами Autoboxing значения 3int.


Остальные вопросы не имеет смысла для меня:

  • Как это называется?

Это называется "создание и инициализация массива"

  • Что там происходит?

Он создает и инициализирует массив

  • Как вы могли получить доступ к параметрам, что?

Umm ... как показано на примере? По значению? Индексированием массива? Непонятно, что вы просите.

1

Этот код может быть возможно перевести как следующий

private void queryforlist(string SQL, object[] parameters, Class c) 
{ 
    //parameters is an array of objects used to replace the ? caracteres in the sql 
    //text. 

    if (parameters != null) 
    { 
    //we can access parameters by index inside the method 
    for(int i=0; parameters.length; i++) 
    { 
     if (parameters[i] instanceof String) 
     { 
     //adding quotes to string for example 
     String param = "\""+parameters[i]+"\""; 

     } else if (parameters[i] instanceof Integer) 
     { 
     //Note is Integer not int because of AutoBoxing: 
     } 
    } 
    } 
} 

Это полезно принимать динамические типы данных, такие как целые числа, строки и т.д. И дело это их по отдельности, например: Добавление TO_DATE() в день в случай базы данных Oracle/поставщика.

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

Эта специфическая линия:

new Object[] { 3 } 

можно перевести как:

Object[] AnonymousArrayObject = new Object[1]; 
AnonymousArrayObject [0] = 3; 

Поскольку queryForList принимает массив объекта в качестве параметра, существует несколько способов вызова этого метода:

Пример 1

getJdbcTemplate().queryForList(
    "DELETE FROM foo WHERE id = ?", 
    new Object[] { 3 }, 
    String.class 
); 

Пример 2

Object[] Parameters = new Object[1]; 
parameters[0] = 3; 

getJdbcTemplate().queryForList(
    "DELETE FROM foo WHERE id = ?", 
    Parameters, 
    String.class 
); 

Пример 3

Object[] Parameters = new Object[] { 3 }; 

getJdbcTemplate().queryForList(
    "DELETE FROM foo WHERE id = ?", 
    Parameters, 
    String.class 
); 

Пример 1,2 и 3 делает то же самое

Пример 4

getJdbcTemplate().queryForList(
    "DELETE FROM foo WHERE id = ?", 
    null, 
    String.class 
); 

Пример 5

Object[] Parameters = null; 
getJdbcTemplate().queryForList(
    "DELETE FROM foo WHERE id = ?", 
    Parameters, 
    String.class 
); 

Пример 4 и 5 делают то же самое

Как это называется?

Это называется Short-hand для создания и инициализации массива. Поскольку вам не нужно объявлять переменную для доступа к массиву объекта в этот конкретный момент.

Что там происходит?

Объясняется в ответе!

Как вы можете получить доступ к этим параметрам?

Объясняется в ответе!

AutoBoxing

0

new Object[] означает, что это массив Object типа. new Object[]{3} является короткой рукой, чтобы назначить этот массив Integer 3.

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