首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用注释创建可调用项

使用注释创建可调用项
EN

Stack Overflow用户
提问于 2013-07-24 11:15:32
回答 1查看 500关注 0票数 1

我正在尝试制作一个类似于https://github.com/ElgarL/TownyChat/blob/master/src/com/palmergames/bukkit/TownyChat/TownyChatFormatter.java的系统

代码语言:javascript
运行
复制
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() : "";
        }
    });

还有更多。

是否有一种方法可以使用注释来减少重复代码的数量,避免调用调用方法的反射,并且只在注册期间使用它(如果有的话)?

我并不反对创建注释预处理器的想法,因为我已经计划这样做,以便能够自动生成文档。

EN

Stack Overflow用户

发布于 2013-07-25 13:24:38

您可以尝试新的Java8Lambda表达式(http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html)。

代码语言:javascript
运行
复制
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());
        }
    });

可以写成:

代码语言:javascript
运行
复制
replacer.registerFormatReplacement(
  Pattern.quote("{worldname}"), 
  (match, event) -> { return String.format(ChatSettings.getWorldTag(), event.getEvent().getPlayer().getWorld().getName()); } 
});

您还可以通过另一个接口、方法、.把它包起来

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17832381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档