Передача аргумента классу в Java - PullRequest
2 голосов
/ 27 ноября 2011

Допустим, у меня есть класс, и я хочу, чтобы один из его методов вел себя по-разному в зависимости от аргумента. Я хочу сделать что-то вроде этого (я знаю, что это не работает в Java):

class myClass(int a) {
    public void myMethod() {
        if (a == 1)
            // do something
        if (a == 2)
            // do something else
    }
}

Есть ли способ сделать это?

Ответы [ 4 ]

6 голосов
/ 27 ноября 2011

У вас есть два способа сделать это.

  • Передайте аргумент в конструктор класса и сохраните локальную ссылку на него. Затем вы можете использовать его во всех методах вашего класса.

Как это:

class MyClass {
    private final int a;

    public MyClass(int a) {
        this.a = a;
    }

    public void myMethod() {
        if (a == 1)
            // do something
        if (a == 2)
            // do something else
    }
}
  • Передайте аргумент методу, если вы собираетесь использовать его только в этом методе.

Вот так:

class MyClass {
    public void myMethod(int a) {
        if (a == 1)
            // do something
        if (a == 2)
            // do something else
    }
}  
4 голосов
/ 27 ноября 2011

Аргумент должен быть передан методу, а не классу:

class MyClass { // note that class names should start with an uppercase letter.
    public void myMethod(int a) {
        if (a == 1)
            // do something
        if (a == 2)
            // do something else
    }
}

Прочитайте учебник по языку Java .

2 голосов
/ 27 ноября 2011

Вы можете передать этот аргумент в конструкторе

class MyClass {
    private int a;
    public MyClass(int a){
        this.a = a;
    }
    public void myMethod() {
        if (a == 1)
            // do something
        if (a == 2)
            // do something else
    }
}
1 голос
/ 27 ноября 2011

Полиморфизм - это путь.Сначала определите свой базовый класс с помощью абстрактного метода myMethod(), а затем дополните его двумя классами, обеспечивающими две разные реализации метода.

...