【发布时间】:2016-11-02 14:45:40
【问题描述】:
我用Java写了一个排序函数和类:
public class MiscellaneousUtilities {
/**
* Changes a list of "First Last" to "Last, First" and "First Middle Last" to "Last, First Middle", etc.
*/
public static Function<String, String> ToLastFirstFunction = new Function<String, String>() {
@Override
public String apply(String nm) {
String[] nmarr = nm.split(" ");
int last = nmarr.length - 1;
String res = nmarr[last];
if (last > 0) {
res += ",";
}
for (int i = 0; i < last; i++) {
res += " " + nmarr[i];
}
return res;
};
};
}
当我想使用它时,我不能只说MiscellaneousFunctions.ToFirstLastFunction()
我必须做一个新的MiscellaneousFunctions().ToFirstLastFunction;
我尝试将 static 放在类声明的前面,但它只允许 public、final 和 abstract。如果我想使用Math.min(),请查看数学课,我不必创建新的Math().min()。数学也被定义为前面没有static的类,min()和ToFirstLastFunction一样,所以我不明白区别。
【问题讨论】:
-
MiscellaneousFunctions.ToFirstLastFunction()不起作用,但MiscellaneousFunctions.ToFirstLastFunction.apply("foo")应该。 -
您实际创建的是
Function类型的静态变量,而不是像Math.min()这样可以调用的方法,如果将ToLastFirstFunction更改为实际函数,则可以像@ 一样调用它987654334@