【问题标题】:Initializing java pojo with sample values使用示例值初始化 java pojo
【发布时间】:2013-02-08 07:22:34
【问题描述】:

这听起来像是一个微不足道的问题,但我不知道一个简单的方法。

如何在 Java 中使用默认值/示例值构造类实例?该对象可能有其他对象作为其构造的一部分。

【问题讨论】:

  • 我正在寻找一个使用 java 反射为我做这件事的解决方案。我的类很大,有嵌入的对象,并且创建了一个不必要的构造函数,它会被团队中的其他程序员滥用。
  • 我参加聚会很晚了,但如果其他人提出类似的问题,您可能需要查看Builder patternsee this question and answer

标签: java initialization pojo


【解决方案1】:

在变量声明时分配默认值。示例 -

public class Model{
  private String model = "default"; // Default value
  public String getModel(){
      return model;
  }
  public void setModel(String model){
      this.model = model;
  }
}

或者通过构造函数赋值。

public class Model{
  private String model;
  public Model(String model){
      this.model = model;
  }
  public String getModel(){
      return model;
  }
  public void setModel(String model){
      this.model = model;
  }
}

【讨论】:

  • 是在 POJO 中赋值还是使用它的 setter 并在需要的地方设置值更好?
【解决方案2】:

你可以在构造函数中给出默认值,或者在定义你的类时给出它。

【讨论】:

  • 感谢您的建议,但我正在寻找一个使用 java 反射为我做这件事的解决方案。我的类很大,有嵌入的对象,并且创建了一个不必要的构造函数允许它被团队中的其他程序员滥用
  • @Jayz:我认为使用反射会更乏味,IMO 这不是合适的方式。
  • 这就是为什么我正在寻找一个框架/库来做到这一点,我知道如何使用反射编写代码,但我知道这会很乏味。像 Jackson 这样的 Json 解析工具可能会在内部完成,我猜 Easymock 也会做类似的事情。
  • @Jayz:Easymock 的目的完全不同。看起来你让它变得非常复杂。可能会再次重新审视您的问题,并考虑您是否真的需要反射/Easymock。
【解决方案3】:

在你的构造函数中赋值了吗?如下:

public class Foo {
  private int bar;
  public Foo(int barValue) {
   super();
   this.bar = barValue;
  }
  public void setBar(int aBarValue) { this.barValue = aBarValue; }
  public int getBar() { return this.barValue; }
  public String toString() { return new Integer(this.getBarValue()).toString(); }
}

【讨论】:

    猜你喜欢
    • 2021-09-22
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多