gpt4 book ai didi

java - 在 Java 中识别方法内部的调用者

转载 作者:行者123 更新时间:2023-12-04 16:36:45 25 4
gpt4 key购买 nike

我有一个 A 类和 B 类,如下所示:

class A {
public String myMethod(){
// do-something
return send();
}

public String send(){
// sending for A;
}
}

class B {
public String myMethod(){
// do-something
return send();
}

public String send(){
// sending for B;
}
}

现在 myMethod() 在两个类中是相同的,但是 send() 方法的实现对于 A 类和 B 类是不同的。我正在尝试实现myMethod() 在 Utility 类中以避免重复方法逻辑。

class Util {
public String myMethod(){
// do-something
return send();
}
}

但是在调用 send() 时,我如何确定哪个对象实际调用了该方法,以便我可以重定向到适当的 send() 方法。我是否需要 Java 中的 instanceOf 或什么是解决此问题的更好方法。

最佳答案

您应该使用继承来实现这一点,而不是在需要参数或反射来识别调用者的实用程序类中提取通用方法。

public interface MyInterface {
default public String myMethod() {
// do-something
return send();
}

public String send();
}
public class A implements MyInterface {
@Override
public String send() {
// send for A
}
}
public class B implements MyInterface {
@Override
public String send() {
// send for B
}
}

使用继承,您可以将 myMethod 代码放在接口(interface)中,并在子类中以不同方式实现 send

关于java - 在 Java 中识别方法内部的调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68904070/

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