Java中类似Python的装饰器?

2024-04-24 05:09:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我大部分时间都是用Python编程的,所以如果我对这个问题的处理方法很短,请原谅我:

我想让类的某些方法需要登录凭据。简单地说,每个方法都应该检查是否设置了类变量user,如果设置了,则继续,如果没有,则弹出一条“you need to login”消息。

在Python中,我只需要编写一个decorator来完成这个任务。如何在java中用尽可能少的冗余代码完成相同的任务?

谢谢!


Tags: to方法代码you消息编程时间login
3条回答

在Java中解决这个问题的一种方法是使用Aspect-oriented programming工具。一个这样的工具是AspectJ。您可能会发现,这类问题是一个通常用于激励AOP的示例。

AOP可能是解决这个特定问题的一个非常重要的方法,因此您可能希望探索只向每个方法添加适当的检查。在本机Java中,没有任何直接等价于Python的decorators。

最简单的做法是编写一个类似“assertCredentials”的方法,并在每个需要凭据的方法的开头调用该方法。如果未设置凭据,则该方法应引发异常,该异常将中止父方法。

Java有可以用来修饰方法等的注释,但我不认为在这种情况下使用注释会简化事情。

您可以尝试Google Guice AOP,它相对来说比AspectJ这样的AOP框架更轻量级。

相关问题 更多 >