【问题标题】:Pointing to a private method in Java?指向Java中的私有方法?
【发布时间】:2014-09-24 21:28:09
【问题描述】:

我在一个类中有一个公共方法需要指向一个私有方法,我该怎么做?

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");
    }

如何从 setup() 方法指向 setName() 方法?是的,我确实需要 setName() 方法,即使我可以将所有这些信息放入 setup() 方法中。

【问题讨论】:

  • 这一切你可能想多了。只需从setup() 方法中调用setName(...) 方法,就这么简单。你当然会用它来传递相应的信息。
  • 正如@HovercraftFullOfEels 告诉你的那样,你只需要在setup 的末尾添加setName()
  • 类中的方法可以调用该类中的任何其他方法。拥有一个private 没有区别。

标签: java methods private


【解决方案1】:

您的代码的一个问题是您的 setName 方法是 setter 方法或“mutator 方法,因此它应该设置属性或字段的状态你的类。要让它工作,你需要给它一个参数以允许任何调用它的人将信息传递给方法,而你的不这样做。

编辑:我收回了。您的问题是您的方法命名错误,因为它根本不是一个 setter 方法。将其更改为其他内容,例如 manipulateName(),然后调用您的公共 setter 方法后调用它。

例如:

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");
  }

【讨论】:

  • @DavidConrad:在看到您的评论之前,我已经编辑了我的答案,也许我已经解决了这个问题。他的私有方法根​​本不是二传手。
  • 这不是Java Bean,setName只是初始化name字段,它不是setter。
猜你喜欢
  • 1970-01-01
  • 2022-11-20
  • 1970-01-01
  • 2011-01-01
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多