2
下面的方法是我的接口:大多數緊湊型/高效/維護添加這些匿名類
import java.util.ArrayList;
public abstract class Function
{
private String name;
private String result;
public Function(String name, String result)
{
this.name = name;
this.result = result;
}
public String getName()
{
return name;
}
public String getResult()
{
return result;
}
public abstract Thing execute(Cheesepuff cheesepuff, int line, ArrayList<Thing> arguments) throws CheesepuffException;
}
而且目前我有一個整體文件的完整這些聲明:
addDefaultFunction(functions,
new Function("get", "Gets the variable named by arg1.")
{
@Override
public Thing execute(Cheesepuff cheesepuff, int line, ArrayList<Thing> arguments) throws CheesepuffException
{
assertMinimumArguments(1, arguments, line, this);
assertNotNull(arguments.get(0), 1, line, this);
return cheesepuff.getVariable(arguments.get(0).getString(line));
}
});
是否有更緊湊的方式來做到這一點?不是可以接受的答案。看起來好像有很多額外的代碼增加了它的膨脹。
在C#中,例如,你可以這樣做:
addDefaultFunction(functions, "get", "Gets the variable named by arg1.",
(Cheesepuff cheesepuff, int line, List<Thing> arguments) =>
{
.....
});
或者類似的東西。我不記得確切的語法......顯然實現會稍有不同。