繁体   English   中英

在JSP / Java中,如何用s.th代替getter / setter。 更通用?

[英]In JSP/Java how can I replace getter/setter by s.th. more generic?

我一直在豆子里添加大量的吸气剂/装料器,这让我感到厌倦。 有没有简单的方法可以使用注释来摆脱这项愚蠢的工作? 或其他方式? 第二个示例是简短的版本,我想运行它,因为不需要封装我的成员(尽管在其他情况下可能是必须的)。 在我的现实世界中,我必须访问大约15个类,每个类中有大约10个数据成员,这将产生300个无用的setter / getter。

示例TestPerson.java(有效):

public class TestPerson {
  public String firstName;
  public String lastName;
  public TestPerson() {
    firstName = "Hugo";
  }
  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;
  }
}

示例TestPerson.java(无效):

public class TestPerson {
  public String firstName;
  public String lastName;
  public TestPerson() {
    firstName = "Hugo";
  }
}

示例test.jsp

<jsp:useBean id="testperson" class="test.TestPerson" scope="request" />
<html>
<head><title>Test</title></head>
<body>
<h2>Results</h2>${testperson.firstName}<br>
</body>
</html>

只需让您的IDE自动生成它们即可。 例如,在Eclipse中,定义一些属性,右键单击source,选择Source ,然后选择Generate Getters和Setters

在此处输入图片说明

Lombok项目解决了这个(以及更多)问题,并且它同时支持EclipseNetbeans

您是否考虑过使用Groovy脚本语言? 它基于Java并生成Java字节码。

请参阅以下链接: http ://groovy.codehaus.org/Groovy+Beans隐式获取器和设置器。

还有scala:

class foo {
   @BeanProperty
   var s1 : String,
   @BeanProperty
   var i1 : int
}

您可以使用scala编译器生成Java字节代码,该代码将创建此类,适当的私有字段以及getter和setter方法。

但是,假设您要坚持使用纯Java,我怀疑Java很快就会看到对一流属性的支持。 最好的选择是某种代码生成。 尽管通过注释和注释处理程序可能会产生日食拟合,但也有可能生成这些注释。 编辑:这就是龙目岛(如上所述)正在做的事情。 它会在编译时根据注释为您生成源代码。

尝试一次写入 基于模板的代码生成器。 您可以使用Groovy编写自定义模板,并根据Java反射生成文件。 这是生成任何文件的最简单方法。 您可以通过生成AspectJ或Java文件,基于JPA批注的SQL,基于枚举的插入/更新等来生成getters / settest / toString。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM