gpt4 book ai didi

java - 在 Java 中是否可以在运行时检查调用了哪个子类的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:08:37 24 4
gpt4 key购买 nike

interface Y {
void search(String name);
}
class A implements Y {
void search(String name) {
//Is it possible to say: "If I was called from class B then do a search("B");
}
}

class B extends A {
}

public class Main {
public static void main(String[] args) {
B b = new B();
b.search();
}
}

根据上面的代码,是否可以在父类(super class)中推断出哪个子类被用于调用方法?

之所以要这样做是因为Search里面的代码对于所有的Subclasses都是非常相似的,唯一改变的就是Classname,所以我觉得没有必要在每个子类中都Override。我已经更新了代码以反射(reflect)这一点。如果有更好的方法,请告诉我/

最佳答案

search 方法中调用 this.getClass() 将为您提供当前实例的具体类。

例如:

class Example
{
static class A {
public void search() {
System.out.println(getClass());
}
}

static class B extends A {}

public static void main (String[] args) throws java.lang.Exception
{
new A().search();
new B().search();
}
}

输出

class Example$A
class Example$B

关于java - 在 Java 中是否可以在运行时检查调用了哪个子类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35033033/

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