栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java-获取参数传递给方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-获取参数传递给方法?

是否可以使用诸如AspectJ之类的AOP库来实现这一目标?

当然可以。这是AspectJ中典型的初学者练习,如下所示:

public class SampleClass {    public SampleClass() { super(); }    public SampleClass(String s) { this(); }    public SampleClass(int i) { this(); }    public void method01(String s, Number n, Throwable t) {}    public void method02(int i, String s, double d) {}    public void method03(String s) {}    public void method04() {}    public void method05(String s, Number n, double d) {}    public static void main(String[] args) {        new SampleClass().method01("foo", new Integer(11), new RuntimeException("error"));        new SampleClass("test").method02(11, "bar", Math.PI);        new SampleClass(123).method03("zot");        new SampleClass("another test").method04();        new SampleClass(456).method05("baz", new Integer(11), Math.E);    }}

现在,您只需要编写一个方面即可拦截所有方法执行(以及可选的构造函数执行,如下所示):

public aspect MethodArgsAspect {    pointcut allMethods()      : execution(* *(..));    pointcut allConstructors() : execution(*.new(..));    before() : !within(MethodArgsAspect) && (allMethods() || allConstructors()) {        System.out.println(thisJoinPointStaticPart.getSignature());        for (Object arg : thisJoinPoint.getArgs()) System.out.println("    " + arg);    }}

运行时

SampleClass.main
,此方面将打印:

void SampleClass.main(String[])    [Ljava.lang.String;@7fdcdeSampleClass()void SampleClass.method01(String, Number, Throwable)    foo    11    java.lang.RuntimeException: errorSampleClass()SampleClass(String)    testvoid SampleClass.method02(int, String, double)    11    bar    3.141592653589793SampleClass()SampleClass(int)    123void SampleClass.method03(String)    zotSampleClass()SampleClass(String)    another testvoid SampleClass.method04()SampleClass()SampleClass(int)    456void SampleClass.method05(String, Number, double)    baz    11    2.718281828459045


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506178.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号