2013-07-18 3 views
0

См. Следующее определение класса с помощью HashMap.Метод/параметр HashMap

Почему нет необходимости передавать формальные параметры методов локальным параметрам, как это было во втором методе?

import java.util.HashMap; 

public class MapTester 
{ 
    private HashMap<String, String> phoneBook = new HashMap<String, String>(); 

    public MapTester() 
    { 
     phoneBook.put("Homer Jay Simpson", "(531) 9392 4587"); 
     phoneBook.put("Charles Montgomery Burns", "(531) 5432 1945"); 
     phoneBook.put("Apu Nahasapeemapetilon", "(531) 4234 4418");   
    }  

    public void enterNumber(String name, String number) 
    {  
     phoneBook.put(name, number); 
    } 

    public String lookupNumber(String _name) 
    {   
     name = _name; 
     return phoneBook.get(name); 
    } 
} 

ответ

1

Не нужно скопировать параметр в локальную переменную, потому что тогда вы бы иметь две копии одной и той же переменной (name и _name) в то время как требуется только один.

Кроме того, вы, вероятно, потребуется изменить строку

String name = _name; 

, чтобы сделать его компиляции.

+0

да, и спасибо за ваш намек :) ура! – Pato

0

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

public String lookupNumber(String _name) 
{   
     return phoneBook.get(_name); 
} 

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

+0

ОК. спасибо за ваши объяснения. ура! – Pato

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