Несколько подклассов, которые похожи, но разные

1

У меня есть два одинаковых класса, один из которых получает 1 параметр (позволяет указывать тип int), а второй получает один и тот же параметр дважды. Для обоих входных данных мне нужна одна и та же проверка (и исключение throw, если данные не являются хорошими), и оба класса будут иметь некоторую функциональность.

Я думал о создании супертипа, который будет иметь 2 конструктора, один с 1 параметром, а другой с двумя параметрами. Это будет работать, но вопрос, что нужно сделать в случае, если есть возможность иметь три или более параметра.

Поэтому я решил попробовать здесь, если есть лучший вариант.

Благодарю.

Теги:
oop

1 ответ

1
Лучший ответ

Что делать в случае наличия трех или более параметров?

Попробуйте с помощью Varargs, который взял произвольное количество значений, чтобы создать массив и поместить значения в массив до вызова метода/конструктора.

Прочтите главу здесь о Varargs от Eclipse.


Переменные Java-аргументы

arargs является вспомогательным синтаксисом и позволяет использовать переменное количество аргументов в вызове метода. В определении метода переменные aruguments обозначаются elipsis (...) и называются variable arity method и variable arity parameter в спецификации языка Java. При вызове метода varargs мы можем использовать любое количество аргументов типа, указанных и разделенных запятой.

Образец Varargs

public class VarArgSample {

    static int sum(int i, int... marks) {
        int total = 0;
        for (int mark : marks) {
            total = total + mark;
        }
        return total;
    }

    public static void main(String[] args) {

        // invoking with variable arguments
        System.out.println(sum(1, 2, 3));

        // same invocation using an array
        int arr[] = { 2, 3 };
        System.out.println(sum(1, arr));
    }
}

Как работает Varargs?

При вызове с переменными аргументами компилятор сопоставляет список аргументов слева направо с формальными параметрами. После того как начальный набор параметров согласован, то все оставшиеся аргументы строятся как массив и передаются методу.

В данном примере значение 1 'передается как аргумент для переменной' i, тогда нет других аргументов, оставшихся, кроме varargs. Таким образом, оставшиеся значения 2, 3 'строятся как массив и передаются как параметр. Таким образом достигается динамизм.


решение

В вашем случае была возможность иметь три или более параметра, а затем попробуйте

MyClass(int i, int j, int... k){}
  • 0
    Благодарю. Это действительно мило.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню