【问题标题】:Get and set to private variables in java在java中获取并设置为私有变量
【发布时间】:2013-11-28 04:05:46
【问题描述】:

早安,

我是 JAVA 的新手,正在学习这门语言,我所学的似乎是一门很棒的语言。我的问题与以下有关:

假设我有这样的课程:

public class Person{
   private String firstName;
   private String lastName;
   private int age;
   private String entireName;

   public String getFirstName() {
        return firstName;
    }

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public String getEntireName() {
    return entireName;
}

public void setEntireName(String entireName) {
    this.entireName = entireName;
}

   public static void Main(String args[]){
          Person person = new Person();
          person.setFirstName("Jhon");
          person.setLastName("Adams");
          person.setAge(20);
          //Atention this line
          person.setEntireName(person.getFirstName()+person.getLastName());
       }
}

语言允许我这样做:person.setEntireName(person.getFirstName()+person.getLastName()); 它工作得很好,但是我想知道如何最好地做到这一点,它在对象级别的行为以及性能有多高或多低。

谢谢你..

【问题讨论】:

  • 是的,它允许您这样做,person.setEntireName(person.getFirstName()+person.getLastName());,而且您永远不会想要这样做——尝试使用自己的字段重新设置对象的字段.疯了。

标签: java get field private


【解决方案1】:

你所做的完全正确,但不是很合乎逻辑。为什么不直接删除 setEntireName(),因为它只是结合了两个现有字段?

public String getEntireName() {
    return firstName + " " + lastname;
}

【讨论】:

    【解决方案2】:

    这是有效的。没有性能差异,因为 JIT 编译器会根据需要优化此代码(只需将方法替换为字段访问)。

    【讨论】:

      【解决方案3】:

      通常更容易消除 entireName 属性及其设置器,并使用 getter 执行连接,如下所示:

      public String getEntireName() {
          return firstName + " " + lastName;
      }
      

      这也比每次更改firstNamelastName 时更新entireName 更容易维护。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-14
        • 2021-08-21
        • 1970-01-01
        • 2016-07-12
        • 2012-09-27
        • 2011-11-27
        相关资源
        最近更新 更多