当前位置: 首页 > 面试题库 >

从抽象类获取具体的类名称

童花蜂
2023-03-14
问题内容

在Java中,我可以在抽象类中获取扩展它的具体类的实例吗?


问题答案:

是的,您可以致电this.getClass()。这将为您Class提供运行时类型为的实例this

如果只需要类的名称,则可以使用this.getClass().getName()

最后,还有this.getClass().getSimpleName()this.getClass().getCanonicalName()。我一直使用前者来打印可读的类名以记录文件等。



 类似资料:
  • 问题内容: 我之前了解到抽象类可以扩展具体类。尽管我没从JAVA设计师那里看到原因,但是没关系。我还了解到,扩展具体类的抽象类可以使重写的方法抽象。为什么?您可以提供有用的用例吗?我正在尝试学习设计模式,我不想错过任何东西。 这是示例: 问题答案: 如果我有一组想要默认实现的类(以便它们可以从扩展),并且想要强制提供自己的实现(在这种情况下使其抽象为子类会强制执行此操作。) 当然,此示例中的另一种

  • 当我们把类看作一种数据类型时,我们通常认定该类型的对象是要被实例化的。但是,在许多情况下,定义不实例化为任何对象的类是很有用处的,这种类称为 抽象类 (abstract class)。因为抽象类要作为基类被其他类继承,所以通常也把它称为 抽象基类(abstract base class)。抽象基类不能用来建立实例化的对象。 抽象类的惟一用途是为其他类提供合适的基类,其他类可从它这里继承和(或)实现

  • 我知道抽象类可能包含抽象和具体方法(即主体实现)。我的问题是:子类可以从抽象超类继承/覆盖具体方法吗?其次,它们必须以实现抽象方法的方式实现具体方法吗?

  • 我想在我即将完成的一些工作中使用builder模式,它在一个层次结构中有几个类。基类将至少有9个字段要启动,各个子类可能会添加2-4个字段。这会很快失控,而builder模式正是出于这个原因吸引了我。我在书籍和文章中初步接触了builder模式。他们是有帮助的,但没有关于如何扩展这种模式。我试图自己实现这一点,但是我在每个子类的构造函数中遇到了麻烦,因为我不知道如何将构建器中收集的数据传递给超级类

  • 问题内容: 当其中的所有方法都是具体的时,有人在声明类抽象时有一些实际的编程情况吗? 问题答案: 好吧,您可能正在使用模板方法模式,其中存在多个都具有默认实现的覆盖点,但是组合的默认实现本身不合法-任何功能实现都必须是子类。 (是的,我不喜欢模板方法模式;)

  • 问题内容: 我知道该类的名称,说 “ MyClass”, 并且想检索该对象。 MyClass.class 供将来参考。有没有办法做到这一点? 我已经浏览了整个网络,但发现与之相关的大多数内容都与有关,我认为这不适合我的情况。我不想初始化一个类,而只是获取一个类对象以备将来使用。 编辑:关于此的第一个答案: 我已经检查了该方法,但我认为这也应该初始化该类。现在,我可以使用完整参数来调用它,并传递给第