有什么好的模式/技术可以减少Java的冗长

A. *_*evy 21 java design-patterns coding-style

可能有点烦人的事情之一是表达概念所需的代码量.我相信"代码更少更好"的理念,而且我想知道如何编写Java而不会如此令人沮丧地冗长.最近,我阅读了Java问题的隐藏特性,并介绍了使用双括号初始化来模拟List或Map文字.当然,使用这种方法有一些缺点,但它确实允许你用明显更少的字符做某些事情(如果你正确格式化),使代码更清晰,更清晰.我想知道是否没有其他聪明的技巧和鲜为人知的语言功能可以使我的代码更简洁.

我希望通过对该技术的解释,更换的更冗长的方式以及使用该技术的任何潜在缺点来看到答案.

Lau*_*ves 9

在Java 7中引入菱形运算符之前,可以使用用于创建泛型类型的静态工厂方法来减少重复类型参数的需要来减少冗长.(这是因为没有菱形运算符,Java从不在构造函数上推断类型参数,但它会在方法调用上推断.)Google Collections使用这种技术,因此您可以编写:

Set<MyClassWithALongName> set = Sets.newHashSet();
Run Code Online (Sandbox Code Playgroud)

代替:

Set<MyClassWithALongName> set = new HashSet<MyClassWithALongName>();
Run Code Online (Sandbox Code Playgroud)

期待中的Lists,SetsMaps开始以"新"为更多的例子方法谷歌集合类.

除非您是为旧版Java编写的,否则从Java 7开始,最好只使用菱形运算符.


Mat*_*rog 8

您可能已经知道的类似的一个,使用"varargs"功能:

String[] array = new String[] {"stack", "over", "flow"};
List<String> list = Arrays.asList(array);
Run Code Online (Sandbox Code Playgroud)

可以缩写

List<String> list = Arrays.asList("stack", "over", "flow");
Run Code Online (Sandbox Code Playgroud)

不可否认,这不会带来巨大的节省,但确实可以减少一点点的冗长.正如托马斯所说,这份名单将是不变的,所以要小心.实际上,你可以修改列表,你只是无法改变它的长度.感谢pimlottc指出这一点.


kro*_*old 8

使用像spring这样的依赖注入框架.我几乎总是惊讶于代码构造逻辑产生了多少.

  • 也试试Guice.http://code.google.com/p/google-guice/它产生比Spring更短的配置(特别是与Spring的XML配置相比),并且您可以获得编译时类型检查. (2认同)