我正在尝试制作一个类似于https://github.com/ElgarL/TownyChat/blob/master/src/com/palmergames/bukkit/TownyChat/TownyChatFormatter.java的系统
replacer.registerFormatReplacement(Pattern.quote("{worldname}"), new TownyChatReplacerCallable() {
@Override
public String call(String match, LocalTownyChatEvent event) throws Exception {
return String.format(ChatSettings.getWorldTag(), event.getEvent().getPlayer().getWorld().getName());
}
});
replacer.registerFormatReplacement(Pattern.quote("{town}"), new TownyChatReplacerCallable() {
@Override
public String call(String match, LocalTownyChatEvent event) throws Exception {
return event.getResident().hasTown() ? event.getResident().getTown().getName() : "";
}
});还有更多。
是否有一种方法可以使用注释来减少重复代码的数量,避免调用调用方法的反射,并且只在注册期间使用它(如果有的话)?
我并不反对创建注释预处理器的想法,因为我已经计划这样做,以便能够自动生成文档。
发布于 2013-07-25 13:24:38
您可以尝试新的Java8Lambda表达式(http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html)。
replacer.registerFormatReplacement(Pattern.quote("{worldname}"), new TownyChatReplacerCallable() {
@Override
public String call(String match, LocalTownyChatEvent event) throws Exception {
return String.format(ChatSettings.getWorldTag(), event.getEvent().getPlayer().getWorld().getName());
}
});可以写成:
replacer.registerFormatReplacement(
Pattern.quote("{worldname}"),
(match, event) -> { return String.format(ChatSettings.getWorldTag(), event.getEvent().getPlayer().getWorld().getName()); }
});您还可以通过另一个接口、方法、.把它包起来
https://stackoverflow.com/questions/17832381
复制相似问题