在java中使setter返回"this"是一个好主意还是坏主意?
public Employee setName(String name){
this.name = name;
return this;
}
Run Code Online (Sandbox Code Playgroud)
这种模式很有用,因为你可以链接这样的setter:
list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));
Run Code Online (Sandbox Code Playgroud)
而不是这个:
Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);
Run Code Online (Sandbox Code Playgroud)
......但这有点违反标准惯例.我想这可能是值得的,因为它可以让那个setter做一些有用的东西.我已经看到这种模式使用了一些地方(例如JMock,JPA),但它似乎并不常见,并且通常仅用于定义良好的API,其中此模式随处可用.
更新:
我所描述的内容显然是有效的,但我真正想要的是关于这是否普遍可以接受,以及是否存在任何陷阱或相关最佳实践的一些想法.我知道Builder模式,但它比我描述的要多一些 - 正如Josh Bloch描述的那样,有一个关联的静态Builder类用于创建对象.
我正在使用Oracle SQL Developer 3.0.试图找出如何将查询结果导出到文本文件(最好是CSV).右键单击查询结果窗口不会给我任何导出选项.
来自svn,刚刚开始熟悉git.
当在git中删除分支时,它是否从历史记录中删除了?
在svn中,您可以通过还原删除操作(反向合并)轻松恢复分支.与svn中的所有删除一样,分支永远不会被删除,它只是从当前树中删除.
如果实际上从git中的历史记录中删除了分支,那么从该分支合并的更改会发生什么?他们保留了吗?
现在我听到很多关于"Grails上的Groovy"的内容,我想知道更多关于它的信息:
我的团队使用内部团队maven repo,它使用Apache从开发服务器共享.我们还在同一台机器上运行Continuum CI服务器.Continuum中的Maven构建以"安装"目标运行,该目标将最终工件直接复制到共享目录中.
问题是,使用mvn install和使用部署目标(mvn-deploy plugin)将文件添加到共享仓库有什么区别?
在我看来,使用mvn deploy会产生额外的配置麻烦,但我已经在某处读过,将文件安装到共享仓库中由于某些原因与maven的内部工作相关是一个坏主意.
更新:我得到了部署和安装之间的功能差异; 我实际上对maven repo中创建的文件的低级细节更感兴趣.
我有一个不寻常的情况,我需要在可执行jar的清单中添加一个任意的类路径条目(指向一个jar文件).(这适用于Swing桌面应用程序.)
maven-jar-plugin使用maven依赖项为jar清单生成"Class-Path"条目,并且似乎没有任何添加任意条目的方法.
我还看了使用"-classpath"参数将任意类路径条目硬编码到启动应用程序的批处理文件中,但我无法弄清楚如何让Maven将类路径过滤到批处理文件中.
在GF或Tomcat前面使用Apache Webserver是个好主意吗?它是否提高了性能/安全性?
或者没有任何理由将Apache Web Server与GF一起使用?
我在生成的GSP页面中看到了这一点.那是什么?意思?
<g:textField name="name" value="${phoneInstance?.name}" />
Run Code Online (Sandbox Code Playgroud) 我有兴趣看到我的网站上的访问按小时分解 - 有没有办法在Google Analytics中生成此报告?似乎所有指标都只按天细分.也许我可以通过GA API获取此信息?
我有一个checkstyle配置XML文件,并希望自动生成Eclipse格式化程序配置.有没有可以做到这一点的工具?