Java 使用注释为方法强制执行throw语句

Java 使用注释为方法强制执行throw语句,java,exception,annotations,aspectj,Java,Exception,Annotations,Aspectj,我目前正在实现一个系统,其中我使用aspectJ检查是否允许用户调用方法。我的方法如下所示: @Constrained( mayUsers = {Constrained.Types.ADMIN, Constrained.Types.SELLER, Constrained.Types.ORGANIZER} ) public boolean save() { /* code */ } 我可以使用AspectJ拦截消息调用并进行检查,但是如果不允许调用,我想抛出一个异常。如

我目前正在实现一个系统,其中我使用aspectJ检查是否允许用户调用方法。我的方法如下所示:

@Constrained(
    mayUsers = {Constrained.Types.ADMIN, 
    Constrained.Types.SELLER, Constrained.Types.ORGANIZER}
)
public boolean save() {
    /* code */
}
我可以使用AspectJ拦截消息调用并进行检查,但是如果不允许调用,我想抛出一个异常。如果我只是抛出
异常
,方法的用户不会被告知可能抛出的
异常

现在我的问题是:

是否可以强制具有
@constrated
注释的每个方法抛出一个特定的
异常

是否可以强制每个具有 @约束注释引发特定异常

现在不可能这样做。但您可以做的是,在运行时检查所有具有此注释的方法都必须抛出异常。如果其中任何一个方法没有声明throws子句,您可以抛出一些
非法*Exception
,告诉开发人员每个方法都必须声明throws子句

您有两种解决方案:

  • 使用
  • 运行时检查(前提条件)

不幸的是,没有。这种行为真的很好。例如,对于带注释的类(例如对于
@Entity
),您还可能需要一个无参数构造函数。但目前无法在编译时检查此项。好的,谢谢,这是我一直在寻找的答案谢谢,我将查看APT。我认为这将完成工作:)