Java: Задать массив заданной длины в качестве параметра метода? - PullRequest
0 голосов
/ 28 октября 2011

У меня есть метод, который принимает 5 двойных значений и выполняет с ними действие.Прямо сейчас список аргументов - пять различных двойников.Есть ли способ передать double[] в качестве аргумента методу, но убедиться, что его длина точно равна 5?

Один из способов таков:

private void myMethod(double[] args) {
    if (args.length == 5) {
        // do something
    }
}

, но есть ли лучшийспособ

Ответы [ 4 ]

3 голосов
/ 28 октября 2011

Если вы знаете, что вам нужно ровно 5 удвоений, то я думаю, что вам лучше попросить 5 раздельных удвоений.Если перечислить их со значимыми именами, все равно будет достаточно сложно (даже с intellisense или как там это называется) поддерживать порядок переменных прямо.Если они находятся в массиве, пользователю необходимо обратиться к документации, чтобы узнать, какое значение должно входить в какой индекс.

0 голосов
/ 28 октября 2011

Вы можете поместить свой код в блок try-catch.Это позволяет пропустить ненужную проверку.Но если что-то не так, вы можете избежать проблем за исключением.

0 голосов
/ 28 октября 2011

Вы можете создать класс, который является специализацией вектора, ограниченного 5 двойными, но это выглядит как избыточное убийство. Я бы просто выбросил исключение, если в массиве слишком мало или слишком много записей - скорее всего, это проблема программирования, а не исключение времени выполнения.

0 голосов
/ 28 октября 2011

Нет. Вы не можете ограничить длину массива, передаваемого в функцию.

Если ваша цель состоит в том, чтобы не допустить проверки кода из метода, чтобы он был чище, вы можете делегировать реальную работу другому методу.

Если вас беспокоит длина списка параметров, вы можете передать объект параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...