Java代码-如何设置对象变量

Java代码-如何设置对象变量,java,Java,我只是在学习,想知道一段设置对象变量的代码 在下面的测试类中设置对象变量bfield的正确方法是什么 public class test { private String afield; private String bfield; public test() { buildList(); } public void buildList() { some code to derive and populate afield. this.bfield = this.a

我只是在学习,想知道一段设置对象变量的代码

在下面的测试类中设置对象变量bfield的正确方法是什么

public class test {
private String afield;

private String bfield;

public test() {

buildList();

}

public void buildList() {

    some code to derive and populate afield.

    this.bfield = this.afield;   //  ( 1)

    setBfield(afield);  // (2) say getter and setters do exist

    bfield = afield;  //  (3)
}

正确的方法是什么?I选项1确定还是选项2?

setter/getter更可取,因为您也可以在这些访问器方法中封装一些处理


另请参见


setter/getter更可取,因为您也可以在这些访问器方法中封装一些处理


另请参见


    • 当然,这三种方法中的任何一种都能奏效

      我通常不喜欢选项1,除非我区分实例成员和参数。例如,
      public void buildList(String bfield){this.bfield=bfield;}
      <代码>这个。一切都是额外的噪音;如果您不需要它,它所做的就是为bug提供更多的代码来隐藏。:)

      选择2更能证明未来;如果您更改了某些内容,因此必须将其他内容与
      bfield
      一起设置(或者如果
      bfield
      根本不需要备份字段,例如,如果设置它,则应在子对象上设置一些内容),您会很高兴调用
      setBfield
      ——因为您没有十几个位置可以更改设置
      bfield
      的代码。基本上,如果您需要并且已经有了
      setBfield
      方法,我建议在大多数情况下使用它


      如果您知道某个字段始终包含在对象本身中,并且独立于其他字段,则选项3通常更快。另外,如果您不希望外部代码也能够设置
      b字段
      ,那么您不必创建setter(读取:污染您的界面)。

      当然,这三者中的任何一个都可以工作

      我通常不喜欢选项1,除非我区分实例成员和参数。例如,
      public void buildList(String bfield){this.bfield=bfield;}
      <代码>这个。一切都是额外的噪音;如果您不需要它,它所做的就是为bug提供更多的代码来隐藏。:)

      选择2更能证明未来;如果您更改了某些内容,因此必须将其他内容与
      bfield
      一起设置(或者如果
      bfield
      根本不需要备份字段,例如,如果设置它,则应在子对象上设置一些内容),您会很高兴调用
      setBfield
      ——因为您没有十几个位置可以更改设置
      bfield
      的代码。基本上,如果您需要并且已经有了
      setBfield
      方法,我建议在大多数情况下使用它


      如果您知道某个字段始终包含在对象本身中,并且独立于其他字段,则选项3通常更快。另外,如果您不希望外部代码也能够设置
      b字段
      ,那么您不必创建setter(读取:污染您的界面)。

      使用eclipse!让它为你做一些工作。 像这样创建一个类测试

      public class Test {
         private String afield;
         private String bfield;
      }
      
      然后做这些:

      • 右键单击->选择“源”->生成构造函数
      • 右键单击->选择“源”->使用字段生成构造函数
      • 右键单击->选择“源”->生成getter/setter

      完成:)并执行JavaBean约定的查找。您的代码会使任何java exp开发人员都感到震惊:)

      使用eclipse!让它为你做一些工作。 像这样创建一个类测试

      public class Test {
         private String afield;
         private String bfield;
      }
      
      然后做这些:

      • 右键单击->选择“源”->生成构造函数
      • 右键单击->选择“源”->使用字段生成构造函数
      • 右键单击->选择“源”->生成getter/setter

      完成:)并执行JavaBean约定的查找。您的代码会使任何java exp开发人员都感到震惊:)

      在我看来,它们都是正确的……我不得不说,为了抵制否决这个问题的强烈冲动,请使用Getter和Setter。但是如果Setter方法不只是设置值(例如,它可能会触发
      BFieldChangedEvent
      或类似的操作)那么你可能不想使用setter。它们在我看来都是正确的……我不得不说,抵制强烈的否决这个问题的冲动,使用Getter和setter。但是如果setter方法不只是设置值(例如,它可能触发
      BFieldChangedEvent
      或类似的事件)那你可能不想用二传,谢谢大家。我将使用Getter和setter,但同时让我使用aks-如果我将这两个变量组合在一起,我认为为了清晰起见,说{this.aField==this.bField}会更有意义。如果我错了,请纠正我。@Peter:如果
      afield
      bfield
      不是本地人(或参数),这对澄清没有多大帮助;那就是噪音。谢谢大家。我将使用Getter和setter,但同时让我使用aks-如果我将这两个变量组合在一起,我认为为了清晰起见,说{this.aField==this.bField}会更有意义。如果我错了,请纠正我。@Peter:如果
      afield
      bfield
      不是本地人(或参数),这对澄清没有多大帮助;那就是噪音。