gpt4 book ai didi

java - 我可以用 java 注释做这种事情吗?

转载 作者:行者123 更新时间:2023-11-30 11:44:56 25 4
gpt4 key购买 nike

我有一组我调用的方法和一个主处理程序,如下所示:

public class MyHander
{
HashMap<String, Method> methodMap = ...;

static {
... fill the methodMap by looking up local methods
methodMap.put("typeA", findMethod("handleTypeA"));
.... etc.
}

public void handle(MyObject obj) {
Method handler = methodMap.get(obj.getType());
handler.invoke(.....);
}

private handleTypeA() {
....
}

private handleTypeB() {
....
}
}

所以这通常是我调用我的个人处理程序方法所做的。我是否可以通过注释方法 handleTypeA()、handleTypeB() 等然后在我的主 handle() 方法中找到正确的方法来做类似的事情?

最佳答案

是的,您可以为处理程序方法创建一个注释,列出它们接受的类型,并创建一个类来处理它们并返回一个处理程序映射。这会将静态初始化程序中容易出错的代码移到可测试的工厂类中。

public class MyHander
{
HashMap<String, Method> methodMap = HandlerType.buildMap(MyHandler.class);

public void handle(MyObject obj) {
Method handler = methodMap.get(obj.getType());
handler.invoke(.....);
}

@HandlerType({"typeA", "typeAprime"})
private handleTypeA() {
....
}

@HandlerType({"typeB"})
private handleTypeB() {
....
}
}

HandlerType.buildMap 将使用反射来处理注释。您需要确保可以将数组作为默认注释参数传递,或者做一些巧妙的事情,例如将其编码为逗号分隔的字符串。

关于java - 我可以用 java 注释做这种事情吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10540212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com