代码之家  ›  专栏  ›  技术社区  ›  Nik Reiman

POJO类中“is”变量getter/setter的正确语法是什么?

  •  15
  • Nik Reiman  · 技术社区  · 17 年前

    如果一个类包含一个名为“blah”的变量,那么标准的getter/setter语法显然是getBlah()和setBlah(。但是,如果我有一个名为isBlah的变量的POJO类,我会使用:

    public type getIsBlah() {
      return isBlah;
    }
    
    public setIsBlah(type isBlah) {
      this.isBlah = isBlah;
    }
    

    public type isBlah() {
      return isBlah;
    }
    
    public setBlah(type blah) {
      this.isBlah = blah;
    }
    

    7 回复  |  直到 17 年前
        1
  •  20
  •   Jon Skeet    17 年前

    我会说,如果“类型”是 boolean ,你应该使用 getXXX getIsXXX 对我来说,“is”与布尔属性有很强的对应关系,在其他上下文中使用它不仅会违反JavaBeans约定(这可能会影响其他工具),还会误导IMO。

        2
  •  4
  •   Joachim Sauer    17 年前

    请注意,字段的名称与 JavaBean specification 。只有getter/setter的名称是相关的。

    get<PropertyName>() 仅适用于 boolean 属性是 is<PropertyName>()

    请注意,在您的示例中,当您调用getter时,Bean属性名为“Blah” isBlah() 当你叫你的吸气剂时,它是“IsBlah” getIsBlah() .

    就我个人而言,我通常更喜欢 .

        3
  •  3
  •   Nick Holt    17 年前
        4
  •  3
  •   skaffman    17 年前

    如果您使用JSTL,“is”语法有一个很大的问题,那就是JSTLEL无法识别它们。这很愚蠢,但JSTLEL的设计者没有费心检查他们的逻辑是否符合javabeans。

    我经常发现自己在视图层类中编写getIsBlah()方法,这些方法调用isBlah((),只是为了给JSTL一个钩子。太可怕了。

        5
  •  2
  •   Ionuț G. Stan    17 年前

    getIsBlah()

        6
  •  1
  •   aberrant80    17 年前

        7
  •  0
  •   thetoolman    16 年前

    根据bean规范,JSTL只允许isMyBool是布尔值,而不是布尔值或任何其他对象(原始值vs对象)。

        8
  •  0
  •   vsp    13 年前