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

我想对某些方法调用应用注释,以便我可以告诉 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();

          }

        }


呼如林
浏览 152回答 2
2回答

喵喔喔

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

杨__羊羊

我认为你不能这样做,如果你想这样做,也许你应该重新考虑如何组织你的代码。我不确定您为什么要这样做,但有人猜测,也许对于某款特定的法拉利,您想以另一种方式打开车门。然后,您可以为特定模型扩展 Ferrari 类,并为 Door 接口使用不同的实现。我认为,您可以通过在 spring 中使用限定符或在 Java ee 中使用 @Named 来做到这一点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java