2015-06-04 2 views
-3

Я не знаю, насколько это было бы просто или возможно, но я не могу найти никакой информации об этом. Для метода существует способ установки нескольких параметров.Несколько параметров для одного метода

Например, в этом общедоступном пустоте требуется вызвать компонент и строку при вызове метода в вашем java-файле.

public void testMethod(Component c, String s) 
{ 
    //Do Something 
} 

Есть ли способ сказать public void testMethod(Component c, String d) или public void testMethod(Component c, int i) и когда вызывается метод либо может быть определен?

+5

Да, это называется «перегрузка метода». – RealSkeptic

+3

Вы можете проверить это самостоятельно очень легко. Да, это возможно. – Bubletan

+2

Пожалуйста, не стесняйтесь. Прочитайте несколько руководств, таких как [this] (https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html) – Turing85

ответ

3

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

2

Да, это возможно и является важной концепцией. Этот конкретный метод называется перегрузкой функций. Предположим, что вы объявляете 2 функции, как:

public void testMethod(Component c, String d) {} //function 1 

и

public void testMethod(Component c, int d) {} //function 2 

Вы можете вызывать эти функции из главной, как:

testMethod(c,"Hello") //calls function 1 
    testMethod(c,1) //calls function 2 
+0

Ошибка копирования пасты. Я думаю, что оба вызова вызовут fnct 1 – HyperNeutrino

+0

Это лучше ... – HyperNeutrino

+0

да, извините, мой плохой –

1

Это называется "метод перегрузки". Любые два метода могут иметь одно и то же имя, если параметры разные. Например:

public void doStuff(String string, int integer) {} 
public void doStuff(Object object, float flt) {} 

Это также относится и к конструкторам:

public Thing(String name, int id) {} 
public Thing(Object object, long id) {} 

Однако принять следующие два метода, например:

public void doStuff(String string) {} 
public void doStuff(Object object) {} 

Теперь, вызовите метод doStuff(null). Компилятор не может сделать вывод, какой из них использовать; в этом случае вы получите ошибку компиляции. Это также происходит в конструкторах (только для того, чтобы убрать его, конструкторы почти такие же, как и методы).

0

Проще говоря, вы можете.

public void testFunction(Component c, String s) { 
    // Handle on a string 
} 

public void testFunction(Component c, int i) { 
    // Handle on integer 
} 

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

+0

+1 для указания важности порядка параметров. Многие забывают об этом. Я тоже, иногда – HyperNeutrino

Смежные вопросы