gpt4 book ai didi

Java+Reflection : Invoke method on variable access. 可以吗?

转载 作者:行者123 更新时间:2023-11-29 09:57:50 26 4
gpt4 key购买 nike

我想知道是否有可能使用反射或类似的东西在读或写模式下访问变量时调用方法。简而言之,我的目标类似于 C# 属性的行为。

示例:假设我有两个类 A 和 B...

public class A{
public int field;

public void foo(){ System.out.println("Field modified");}
}

public class B{
public void bar(A a){
a.field = 1;
}
}

...我想在写入 a.field 时执行方法 A.foo()。

这在 Java 中可以实现吗?

提前致谢

附注我知道良好的编程习惯建议使用 getter 和 setter。我只需要知道我想做的事情是否可行。

交流

最佳答案

不是通过反射 - 反射只是让您在运行时访问有关类/字段/等的静态信息。

Aspect oriented programming更符合您的想法 - 这使您可以在源代码的某些点(例如在方法运行之前、设置字段时等)注入(inject)少量代码(称为“建议”)。这几乎肯定会让您做您正在寻找的事情。

尽管有一句警告 - 正如您似乎接受的那样,依赖方面作为您的一般逻辑不太可能是一个好主意,因为很难对它们进行推理,并确切地计算出什么时候会发生什么(通过定义,它们打破了调用方法 foo() 意味着控制直接传递给该方法的默认心智模型)。不过,AOP 对于日志记录或调试之类的事情非常好,因为它允许您编写少量代码来影响很多横切关注点,而且不需要您修改代码的底层应用程序。您的建议可以根据需要编入,不需要时直接省略。

关于Java+Reflection : Invoke method on variable access. 可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com