java - 调用方法时获取扩展父类(super class)的子类的实例

标签 java

因此,我希望能够获取在调用父类(super class)中的方法时正在运行的子类的实例。例如,如果我有这样的类(class):

public class A {
public void aMethod() {
    //Here is where I want to see if class B is calling the code
}
}

public class B extends A {
}

public class C {
B b = new B();
b.aMethod();
}

并且,就像评论所说,我想检查,在 aMethod 中,类 B(类 A 的子类)是否正在调用代码。

最佳答案

正如已经向您指出的那样,几乎没有充分的理由这样做,并且我同意您应该使用多态性。但是,如果您“需要”执行此操作或只是想知道如何执行此类操作,则可以在方法内部的 this 上使用 instanceof:

class A {
    public void aMethod() {
        if (this instanceof B) {
            System.out.println("I'm a B!");
        }
    }
}

public class B extends A {

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

关于java - 调用方法时获取扩展父类(super class)的子类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21418122/

相关文章:

java - Glassfish 安全 - jdbcRealm : How to configure login with SHA-256 digest

java - 将数据存储到 GlobalKTable

java - 使用每像素透明度时,JScrollPane 中的滚动速度非常慢

java - Java 中的空值和指针

Java 8 编译器错误 - 如何获取更多信息?

java - Visual Studio Code 不为 java 插件提供语言支持的 java 导入建议

Java错误扫描JSONObject程序使用扫描仪无限扫描

java - 如何使用 OVal 验证框架为基于自定义 XML 的方法约束添加其他上下文/值

java - 如何使用 Eclipse 向 BufferedReader 的 readLine() 方法提供 null

java - 使用 Oracle SQL Developer/Java 按计划时间运行报告并通过电子邮件发送报告?