【发布时间】:2012-01-29 06:51:47
【问题描述】:
我有很多基本上遵循这种模式的样板代码:
function doSomething() {
try {
[implementation]
[implementation]
[implementation]
[implementation]
} catch (Exception e) {
MyEnv.getLogger().log(e);
} finally {
genericCleanUpMethod();
}
}
我很想创建自己的注释来清理我的代码:
@TryCatchWithLoggingAndCleanUp
function doSomething() {
[implementation]
[implementation]
[implementation]
[implementation]
}
方法签名千差万别(取决于方法的实际实现),但样板的 try/catch/finally 部分始终相同。
我想到的注解会自动用整个try...catch...finally hoopla 包装被注解的方法的内容。
我到处寻找一种直接的方法来做到这一点,但一无所获。我不知道,也许我只是看不到所有带注释的树木的树林。
任何关于我如何实现这种注释的指针将不胜感激。
【问题讨论】:
-
在我看来,注释是不必要的;您可以将定义
implementationOfDoSomething()和(可能)genericCleanUpMethod()作为参数的实现传递给doSomething(),在try/catch/finally中调用它们,然后在需要样板逻辑时调用doSomething()?跨度> -
你的答案在于AOP,你研究过这个吗?
-
我的理解是他在多个方法中都有相同的try/catch/finally。所以不仅仅是一个 doSomething,而是更像 doSomething1、doSomething2、... 都具有相同的 try/catch/finally,他想要提取到注释中
-
@jeff - 对,但我的论点是样板文件 (
doSomething()) 可以概括为从doSomething1()和doSomething2()调用的库代码。 -
感谢到目前为止的 cmets。我已经更新了原始问题:方法本身包含实现,它们不仅仅包含对实际实现的单个方法调用。我的示例代码很糟糕。
标签: java methods annotations