【问题标题】:How to get a reference to the subclass inside an abstract java class [duplicate]如何在抽象java类中获取对子类的引用[重复]
【发布时间】:2017-02-25 20:31:42
【问题描述】:

Java 中的所有抽象类显然都是由具体类扩展的,不能自行实例化,我如何获得对扩展我的抽象类的类的引用?我的用例涉及反射,在我的父抽象类中,我想反省具体子类上的方法,我不知道如何在不添加抽象方法强制子类返回其类的情况下获取对子类的引用。有任何想法吗?!

【问题讨论】:

  • this 会工作,不是吗?
  • 我不确定是否理解。抽象类中的子类是什么???抽象类有一个超类。它也可能有子类。但是“内部”的概念,我不明白。对不起。
  • 说 AbstractPerson 是 java 中的一个抽象类,而 JohnSmith 扩展了 AbstractPerson,在 AbstractPerson 中我可以得到对 JohnSmith 子类的引用吗?
  • 再一次,像我的第一条评论中提到的那样,简单地使用this 引用有什么问题?

标签: java oop abstract-class subclassing


【解决方案1】:

您可以使用this 作为对当前对象的引用。通过在抽象类中调用 this.getClass(),您将在运行时获得子类的 Class 实例。

此外,您的问题已经在这里得到解答:

Get Concrete Class name from Abstract Class

如果我理解错了,请纠正我。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 感谢您的提示,编辑了原始答案。
【解决方案2】:

您的抽象类在运行时并不“存在”,只能实例化具体的实现。任何在抽象超类中定义并且在具体类中未被覆盖的方法都可以通过this 引用来引用“自身”。

【讨论】:

  • 我现在明白了!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
相关资源
最近更新 更多