2014-09-24 2 views
-2

У меня есть открытый метод внутри класса, который должен указывать на частный метод, как бы я это сделал?Указывая на частный метод в Java?

public class test1 
{ 
    private String lastName; 
    private String firstName; 
    public String name; 

    public void setup() 
    { 
     Scanner in = new Scanner(System.in); 
     System.out.println("Please enter the last name followed by the first name of" + 
       " a student: "); 
     lastName = in.next(); 
     firstName = in.next();      
    } 
    private void setName() { 
     name = firstName + " " + lastName; 
     name = name.replaceAll(",([^,]*)$", "$1"); 
    } 

Как бы я указал на метод setName() метода setup()? И да, мне нужен метод setName(), хотя я мог бы просто поместить всю эту информацию в метод setup().

+7

Вы можете быть более здравомыслящим все это. Просто ** ** вызовите метод 'setName (...)' из метода 'setup()', просто как это. Вы будете использовать его, чтобы передать соответствующую информацию после того, как получите ее, конечно. –

+0

Как вам сказал @HovercraftFullOfEels, вам просто нужно добавить 'setName()' в конце 'setup'. – Dici

+2

Метод в классе может вызывать любой другой метод в этом классе. Наличие «частного» не имеет значения. –

ответ

0

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

Редактировать: Я беру это обратно. Ваша проблема заключается в том, что ваш метод неправильно назван, поскольку это не так метод setter. Измените его на что-то еще, скажем manipulateName(), а затем назовите его после, называя ваши общедоступные методы настройки.

Например:

public Foo { 
    private String bar; 

    public void setup() { 
     //.... use Scanner to get bar String.... 
     String innerBar = scanner.nextLine(); 

     setBar(innerBar); 

     // here's the private method to manipulate stuff 
     changeBar(); 
    } 

    public void setBar(String bar) { 
    this.bar = bar; 
    } 

    public String getBar() { 
    return bar; 
    } 

    private void changeBar() { 
    // do something with bar here 
    bar = bar.replaceAll(",([^,]*)$", "$1"); 
    } 
+0

@DavidConrad: Я отредактировал свой ответ, прежде чем увидеть ваш комментарий, возможно, я обратился к этому. Его частный метод вовсе не сеттер. –

+0

Это не Java-бит, 'setName' просто инициализирует поле имени, это не сеттер. – Aivean

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