Используйте параметризованные тесты JUnit 4 . Они идеально подходят для такого рода проблем, хотя документации не хватает.
Вот несколько примеров того, как их использовать. junit-test /
При объявлении int []
и назначении {1, 2, 3}
компилятор знает, что вы хотите создать int [ ]
, как написано прямо здесь.
В последнем случае, когда вы вставляете массив непосредственно в вызов метода, вам придется использовать
QuickSort sort = new QuickSort(new int[] {8,12,79,12,50,44,8,0,7,289,1});
, чтобы сообщить компилятору, что это за массив.
Вы пробовали преобразовать список в int [] перед передачей его конструктору?
Конструкция {}
называется инициализатором массива и используется для инициализации массива в Java. (Ссылка: Раздел 10.6: Инициализаторы массивов из Спецификация языка Java, третье издание .)
Причина передачи {1, 2, 3}
сам по себе недействителен, потому что нет информации о типе, связанной с инициализатором.
Следовательно, нужно сообщить компилятору, что тип массива является типом, написав new Type []
, где Type
- это тип, для которого создан массив.
Все следующие допустимые варианты использования инициализатора массива:
new String [] {"Hello," World "}
new Character [] {'A', 'B'}
new Runnable [] {new Runnable () {public void run () {}}, new Runnable () {public void run () {}}
Как видно, эта нотация может использоваться для многих типов данных, поэтому она не является чем-то специфическим для целых чисел.
Что касается:
int[] a = {1, 2, 3};
Причина, по которой приведенное выше является допустимым, заключается в том, что информация о типе предоставляется компилятору в объявлении типа переменной, которым в данном случае является int []
. Сказанное выше подразумевает следующее:
int[] a = new int[] {1, 2, 3};
Теперь, если у нас есть new int [] {1, 2, 3}
, мы можем создать новый int []
на месте, так что с ним можно работать, как с любым другим массивом int []
- просто с ним не связано имя переменной.
Следовательно, массив, созданный new int [] {1, 2, 3}
может быть отправлен в метод или конструктор, который принимает int []
в качестве аргумента:
new Quicksort(new int[] {1, 2, 3}); // This will work.
Конфигурацию приложения можно разделить на две категории.
Конфигурация для конкретного приложения включает такие вещи, как реализация кэширования, реализация бизнес-правил и будет применяться при каждом развертывании приложения. Это должно войти в файл web.config, который является частью структуры каталогов приложения и проверяется в системе управления версиями.
Конфигурация конкретного развертывания включает такие вещи, как строки подключения, периоды тайм-аута и т. Д., И может отличаться от одного развертывания к другому. Это должно быть введено как часть конфигурации экземпляра IIS, который задействован в развертывании и сохранен любой стратегией резервного копирования, применяемой для рассматриваемой машины.
Насколько я могу судить, Попробуйте следующее:
QuickSort sort = new QuickSort(new int[] {8,12,79,12,50,44,8,0,7,289,1});
Вы также можете сделать это так:
public class QuickSort {
int[] a;
public QuickSort(int ... a) {
this.a = a;
}
public static void main(String[] args) {
QuickSort sort = new QuickSort(8,12,79,12,50,44,8,0,7,289,1);
}
}
В Java действительно нет вывода типов. Объявления переменных массива - это особый случай в спецификации языка Java, который не применяется к параметрам метода. Это было бы возможно, но добавило бы много сложностей в спецификацию, поскольку ей пришлось бы обрабатывать такие вопросы, как, создает ли {"a", "b"} String [] или Object [] - здесь это выглядит очевидным, но что, если это объекты сложной иерархии типов? А что, если метод перегружен и существуют обе версии?
Фигурные скобки (при использовании в литералах массива) можно использовать только при объявлении массива :)