Инициализируйте массивы с помощью тернарного оператора

Выполнил команды SQL ниже, и вопрос, кажется, решен.

USE database_name
GO

EXEC sp_changedbowner 'sa'
ALTER DATABASE database_name SET TRUSTWORTHY ON 
14
задан marcosbeirigo 25 November 2009 в 13:04
поделиться

3 ответа

Синтаксис {1, 2, 3} можно использовать только в очень ограниченных ситуациях, и это не одна из них. Попробуйте следующее:

int array[] = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};

Кстати, хороший стиль Java - написать объявление как:

int[] array = ...

РЕДАКТИРОВАТЬ: Для записи, причина того, что {1, 2, 3} настолько ограничена, заключается в том, что его тип неоднозначен. Теоретически это может быть массив целых чисел, длинных чисел, чисел с плавающей точкой и т. Д. Кроме того, грамматика Java, как определено JLS, запрещает это, так что это так.

31
ответ дан 1 December 2019 в 07:06
поделиться
boolean funkyBoolean = true;
int[] array = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};
5
ответ дан 1 December 2019 в 07:06
поделиться

Может быть указан инициализатор массива в декларации или как часть выражение создания массива ( §15.10 ), создание массива и предоставление некоторых начальных значений

Это то, что Java Spec говорит (10.6). Таким образом, «короткая» версия (с выражением создания) разрешена только в объявлениях ( int [] a = {1,2,3}; ), во всех остальных случаях вам понадобится новый int [] {1,2,3} , если вы хотите использовать инициализатор.

3
ответ дан 1 December 2019 в 07:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: