【问题标题】:Class object of subclass in super-class method [duplicate]超类方法中子类的类对象[重复]
【发布时间】:2017-12-14 17:16:18
【问题描述】:

遵循超类/子类关系:

public abstract class A {
  public Class<? extends A> getSubClass() {
      Class<? extends A> clazz = ???
    }
}

public class B extends A {
  /* some implementation*/
}

public class Foo {
  public static void main(String... args) {
    A a = new B();
    a.getSubClass();
  }
}

有没有办法让b.getSubClass()返回 acutall 子类类型?

【问题讨论】:

  • 呃...用getClass()替换???
  • @Kayaman 我应该投反对票,我自己的例子不对,我更正了 - 对不起:-(
  • 是一样的。即使你可以打电话给a.getClass()。这真的是你的问题,还是你想要理解的其他东西?
  • @Kayaman 现在我完全糊涂了。我从事 Java 开发多年,并认为我对此进行了测试,但它不起作用。如果日子很长,就会发生奇怪的事情。无论如何,感谢您的帮助!

标签: java inheritance


【解决方案1】:

这个

package test;

public class SubClass {
    public static void main(String[] args) {
        final A b = new B();

        System.out.println("Class: " + b.getSubClass().getName());
    }

    public static abstract class A {
        public Class<? extends A> getSubClass() {
            return this.getClass();
        }
    }

    public static class B extends A {
        // No further implementation
    }
}

生产

Class: test.SubClass$B

即使在超类方法中,实际的类也是子类。

【讨论】:

    猜你喜欢
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2011-04-05
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    相关资源
    最近更新 更多