Java 类和方法上的自定义注释
我是否可能在类上放置自定义注释,然后强制开发人员在方法上放置注释 假设我有三个自定义注释Java 类和方法上的自定义注释,java,spring-mvc,annotations,customization,aspectj,Java,Spring Mvc,Annotations,Customization,Aspectj,我是否可能在类上放置自定义注释,然后强制开发人员在方法上放置注释 假设我有三个自定义注释 @Loggable @MySQLLoggable @CassandraLoggable 当我在类上添加@Loggble注释时,它强制开发人员通过@MySQLLoggable或@CassandraLoggable对其所有方法进行注释 更新我 已编辑 @Loggable // Suppose I put this annotation on class public class Service { @MyS
@Loggable // Suppose I put this annotation on class
public class Service {
@MySQLLoggable //eclipse forceful the developer
//to put @MySQLLoggable or @CassandraLoggable on sayHello()
public String sayHello() {
return null;
}
}
使用@interface
public @interface foo {
String str();
}
@foo(str = "str")
public class myClass{
}
编辑
抱歉,如果您希望IDE让开发人员使用您的自定义注释,那么您最好阅读您的IDE规范和可能的自定义。如果您希望在以后的执行过程中,如果方法没有注释,您的应用程序将抛出异常,那么您必须使用反射。让我们保存您使用Factory模式创建的对象。因此,在创建它们之前,您可以检查是否所有方法都已注释,如果不是所有方法,则抛出异常。我再次相信你必须运用反思。。这只是一条路 您可以创建自定义注释并将其放到类中。这不会迫使开发人员在类(myClass)的所有方法上添加另一个注释哦,对不起,我误读了你的问题,不确定我是否仍然正确理解它,但是:public@interface loggable{@loggable1(method)@loggable2(method))String foo();}如果你将它添加到一个类中,你将被迫添加它们。(将它添加到答案中)我注意到你把它标记为Spring MVC)有趣的是,我实际上描述了这个web框架在实例化控制器时是如何处理的。所以,如果您有两个角色,并且希望用户可以使用所有方法,但其中一个只能由管理员调用,那么您可以对控制器和方法进行注释。使用反射查看方法是否属于所需角色后。实际上,如果用户未对已注释类的方法提供@MySQLLoggable/@CassandraLoggable注释,则程序不应编译。如果有示例,请与大家分享?:)你不能这么做!正如我前面所说的,您最好阅读如何定制IDE!因为即使我让它在Eclipse中工作,也没有人限制其他开发人员在Netbeans中打开我的类并超越我的限制。同样,在低级IDE中,只需运行一个编译器,这样我就可以下载另一个编译器并使用它。我相信你想做的是毫无价值的。再次强调,归档的一个机会是强制所有开发人员坚持使用一个IDE,并配置此IDE以执行您想要的操作。但您可能找不到一个允许以这种方式自定义自身的IDE!
public @interface loggable {
@loggable1(method) @loggable2(method))
String foo();
}