gpt4 book ai didi

java - 识别调用基类静态函数的子类

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:11 25 4
gpt4 key购买 nike

假设我有一个带有函数foo的基类

public class Base
{
protected static void foo()
{
// ToDo - what is the name of the child class calling me?
}
}

以及至少一个包含调用 foo

静态初始化程序的子类
public class Child extends Base
{
static
{
foo();
}
}

有没有办法知道 foo() 是哪个子类调用了它?我想我可以使用一种反射技术。

最佳答案

最简单的方法是传递参数。例如

public class Base {
protected static void foo(Class<?> type) {
if (type == Child.class) {

}
}
}

public class Child extends Base {
static {
foo(Child.class);
}
}

但是,如果您需要执行一些依赖于子类的操作,那么我建议您寻找一种利用抽象方法和多态性的解决方案。

public Base {
protected static void foo(Base child) {
child.doFoo();
}

protected abstract void doFoo();
}

public Child extends Base {
static {
foo(new Child());
}

@Override
protected void doFoo() {
//do the child specific thing here
}
}

关于java - 识别调用基类静态函数的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23296275/

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