2012-02-12 55 views
6

我就開始了一段代碼註釋它調用的方法

class Clazz { 

    public void doSomething() { 
     ... 
     check(); 
    } 

    public void doSomethingElse() { 
     ... 
     check(); 
    } 

    ... // etc., these methods look basically the same - they all call check() at the end 
} 

是否有可能像標註方法@Checked這將導致調用check()末?如果是這樣,你能提供一些例子嗎?

+1

這是不可能的。但問題是:除了混亂之外,你會得到什麼? – 2012-02-12 16:36:31

+0

@JBNizet我只想知道是否有可能,如果沒有,我會學習新的東西。我的實際問題要複雜得多,我希望我能用這個簡化它。 – user219882 2012-02-12 16:41:59

回答

6

是的 - 這是可能的。您需要測試代碼,通常使用方面(AOP)。如果您想查看它的外觀,請查看this example

+0

你的回答不正確,你的'調用你的方法'只會在你反映這個類而不是這個方法被調用時執行。 您可以使用Instrumentation來實現此目的(https://github.com/jboss-javassist/javassist)或者將代碼包裝在生成的方法中(例如https://github.com/square/javapoet) – Spoke44 2017-06-19 14:04:04

+0

@ Spoke44您可以使用「再右吧。我想我一定誤解了這個問題。我不確定爲什麼它被接受,並得到更多的讚揚,而不是正確的答案。 – javamonkey79 2017-07-11 01:41:23

3

它可以用AOP完成。看看AspectJ和動態代理。 使用動態代理,您可以用實際方法調用之前和之後的另一段代碼來包裝類。

+0

請您分享一些關於如何使用AspectJ /動態代理實現此功能的示例或鏈接? – 2015-12-30 04:58:29

+0

@KiranAB,只爲你http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html – AlexR 2015-12-31 10:16:19