java - 将 Annotation 转换为 Java 中的另一种类型

标签 java

我正在开发一个网络库并创建一些注释 - @Get、@Put、@Post、@Delete 等。它们都具有相同的属性,因此是否可以将它们全部转换为某些“super”注释以使使用它们更容易?这是我的代码现在的样子:

public void createGetRoute(Get get) {
  this.path = get.path()
  this.method = "GET"
}

public void createPutRoute(Put put) {
  this.path = put.path()
  this.method = "PUT"
}

// ... And so on

我想做的是:

public void createRoute(Route route) {
  this.path = route.path()
  this.method = route.method()
}

其中 Route 是所有其他注释的“父类(super class)”。我知道我们无法扩展 @interfaces,但是有其他方法可以使我的代码更加干燥吗?

最佳答案

Spring 框架利用了通用请求注释 known as @RequestMapping ,它接受方法类型和一些其他必要的参数。

在框架的版本中,存在诸如@GetMapping之类的便捷注释,它们应用相同的@RequestMapping注释和合理的默认值。

您最好从您能想到的最通用的路线注释开始,并且只有当您可以考虑将它们分解为更小的方法更方便时。

关于java - 将 Annotation 转换为 Java 中的另一种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52725634/

相关文章:

java - listOf() 返回 MutableList

java - 无法卸载 Java JRE 1.7 32 位

java - JSP scriptlet 是反模式吗?

java - 使用 Java Hibernate 将复合主键映射到外键实体

java - 使用 Mockito 的通用 "any()"方法

java - 异常 + 迭代器结束信号 : why is it bad in Java and normal in Python?

java - 更改日期格式并将其存储在 mysql 中的变量中

java - 从 NetBeans 中的单独类关闭 JFrame(但不是整个程序)的 Dispose 方法不起作用。为什么?

java - 运行它但在 s :iterator tag 中没有显示

java - 类和变量