【问题标题】:Adding annotation on existing class from library [duplicate]在库中的现有类上添加注释[重复]
【发布时间】:2019-02-24 12:42:14
【问题描述】:

我想在从库中导入的类上声明一个注解。

例如:

依赖库中存在的原始类

class A{
  int x;
  int y
}

修改类

@someAnnotation
class A{
  int x;
  int y
}

【问题讨论】:

  • 使用更适合的适配器。
  • 真正的问题是为什么你需要那个?这个问题可以用更好的方式来回答......

标签: java class java-8 jvm


【解决方案1】:

简单的答案,你不能。

更长的答案。根据您使用该库的方式,您可能能够创建一个代理类,该类带有注释,并且在其中具有作为委托的真实类,对代理的所有调用都委托给内部实际类。假设您可以以某种方式使用您的代理类。覆盖类是另一种选择,但这取决于原始类是否为最终类,并公开您想要的。

实际上,您需要这个的原因很可能是错误的。 如果你需要使用一些注解,可能是因为你想使用一些能够识别这些注解的框架。使这个库与这个框架紧密耦合可能是一个坏主意和坏设计。如果没有您尝试添加的注释的更多详细信息,就很难提供更多有用的信息。

【讨论】:

  • 当然可以,你只需要修改生成的字节码
  • @Eugene 呵呵,很公平。但是,您需要更改原始库的字节码,该字节码已经在 jar 文件中编译(大概)。不妨获取源代码(如果它是开源的)并 fork 以添加注释。
猜你喜欢
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 2015-01-02
相关资源
最近更新 更多