在Java中,有没有一种快速的方法可以转储方法的所有参数?

10

我经常想要在Java中打印(使用每个对象的隐式toString()方法)每个方法参数。有没有快速实现这一目标的方法?


1
你认为这是Ruby吗? - tjarratt
3
@Matt,记录详细信息没有问题。 - MK.
2个回答

6

Java编程语言没有相应的构造来完成这个任务。不过,你可以使用其中一个AOP(面向切面编程)包,例如AspectJ来实现它。
特别是这个线程可能是一个很好的起点,告诉你如何实现这个功能:

http://dev.eclipse.org/mhonarc/lists/aspectj-users/msg09939.html

我的个人观点是,大多数情况下AOP都是一种可怕的过度设计。

更新:哦,这里有一个更简单的方法,使用Spring AOP,假设您可以使用Spring。通常,Spring比纯AspectJ更容易使用。


过度杀伤力吓人?你能稍微解释一下吗? - Christian Neverdal
2
你基本上是通过一种完全外部于语言和源代码的机制来修改程序的行为。我对这样的事情持谨慎态度。它们会使调试和阅读源代码(特别是没有AOP-aware IDE的情况下)变得更加具有挑战性。 - MK.

3

语言本身没有内置通用方法,但是有一些东西可能适合您的需求:

  1. 您的IDE可能具有生成println的宏。
  2. 如果您只对跨某些层转储参数感兴趣,并且所有调用都通过接口方法进行,则可以使用Java代理。
  3. 可以使用一些字节码操作,无论是编译后还是在类加载期间进行操作。
  4. 让别人来做#3的艰苦工作,然后自学AOP。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接