为了账号安全,请及时绑定邮箱和手机立即绑定

java - 如何将注释应用于某些方法调用

java - 如何将注释应用于某些方法调用

呼如林 2021-11-24 15:24:07
我想对某些方法调用应用注释,以便我可以告诉 aspectj 修改这些调用的执行。public interface Door {  void open() throws DoorException;  void close() throws DoorException;}public class Ferrari {  @Inject @Lightweight Door door;  public void drive() {    open();    close();    open();  }}在这种情况下,我希望所有打开/关闭操作以相同的方式有效地包装,但是如果我希望一个行为不同怎么办?我想做类似的事情:public class Ferrari {      @Inject Door door;      public void drive() {        door.open();        door.close();        @Slowly door.open();      }    }我意识到我不能在那里放置注释,但同样的,我不想破坏开放签名来传递可选的元数据。做这个的最好方式是什么?我可以这样做:public class Ferrari {          @Inject Door door;          public void drive() {            door.open();            door.close();            ((@Slowly Door)door).open();          }        }
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

我打算使用 2 个方面,1 将某些方法标记为“特殊”,然后在注册表中放置一个标志,第二个将包装对给定接口的所有调用并查看注册表以查看该标志是否是放。


查看完整回答
反对 回复 2021-11-24
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

我认为你不能这样做,如果你想这样做,也许你应该重新考虑如何组织你的代码。

我不确定您为什么要这样做,但有人猜测,也许对于某款特定的法拉利,您想以另一种方式打开车门。然后,您可以为特定模型扩展 Ferrari 类,并为 Door 接口使用不同的实现。我认为,您可以通过在 spring 中使用限定符或在 Java ee 中使用 @Named 来做到这一点。


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信