Java 使用注释为方法强制执行throw语句
我目前正在实现一个系统,其中我使用aspectJ检查是否允许用户调用方法。我的方法如下所示: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拦截消息调用并进行检查,但是如果不允许调用,我想抛出一个异常。如
@Constrained(
mayUsers = {Constrained.Types.ADMIN,
Constrained.Types.SELLER, Constrained.Types.ORGANIZER}
)
public boolean save() {
/* code */
}
我可以使用AspectJ拦截消息调用并进行检查,但是如果不允许调用,我想抛出一个异常。如果我只是抛出异常
,方法的用户不会被告知可能抛出的异常
现在我的问题是:
是否可以强制具有@constrated
注释的每个方法抛出一个特定的异常
是否可以强制每个具有
@约束注释引发特定异常
不现在不可能这样做。但您可以做的是,在运行时检查所有具有此注释的方法都必须抛出异常。如果其中任何一个方法没有声明throws子句,您可以抛出一些非法*Exception
,告诉开发人员每个方法都必须声明throws子句
您有两种解决方案:
- 使用
- 运行时检查(前提条件)
@Entity
),您还可能需要一个无参数构造函数。但目前无法在编译时检查此项。好的,谢谢,这是我一直在寻找的答案谢谢,我将查看APT。我认为这将完成工作:)