通过注释引用方法

  • 本文关键字:方法 引用 注释 java
  • 更新时间 :
  • 英文 :


最近我想到了一个问题,你有一个执行某种操作的方法,但它不应该直接调用,而应该通过另一个正确处理它的方法调用。

因此,我一直在想做的是创建一个注释,该注释将包含要使用的方法,即:

@NonDirectUsage(direct=MyClass.directMethod);

它必须类似于可以链接引用的注释,但是,我想以这种方式使用它,以便可以通过运行时等进一步使用它。

实时代码中的示例如下所示:

List<Integer> myList = new ArrayList<>();
@Override
@NonDirectUsage(direct=addToList)
public void add(T t) {
super.add(t);
}
public void addToList(Integer i) {
System.out.println("added integer properly: "+i);
add(i);
}

有什么办法吗?

如果你使用的是 Spring,你可以使用 AOP

例如,您的注释看起来像:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface NonDirectUsage {
}

然后定义一个方面

@Aspect
public class NonDirectUsageAspect{
@Around("@annotation(NonDirectUsage)")
public Object addToList(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("added integer properly: ");
return null;
}
}

不要忘记配置代码以处理方面。

@Configuration  
@EnableAspectJAutoProxy
public class NoDirectUsageConfig {}

我认为如果您使用的是JakartaEE,您可以做类似的事情。

最新更新