我对一段代码有如下风格的评论:
Iterable<String> upperCaseNames = Iterables.transform(
lowerCaseNames, new Function<String, String>() {
public String apply(String input) {
return input.toUpperCase();
}
});
该人说,每次我浏览这段代码时,我都会实例化这个匿名函数类,我宁愿在一个静态变量中拥有一个实例:
static Function<String, String> toUpperCaseFn =
new Function<String, String>() {
public String apply(String input) {
return input.toUpperCase();
}
};
...
Iterable<String> upperCaseNames =
Iterables.transform(lowerCaseNames, toUpperCaseFn);
在非常肤浅的层面上,这在某种程度上是有道理的。多次实例化一个类必须浪费内存或其他东西,对吧?
另一方面,人们在代码中间实例化匿名类,就像没有明天一样,编译器将其优化掉是微不足道的。
这是一个有效的担忧吗?