java - 抽象方法与空方法

标签 java overriding abstract-class abstract

我需要在现有抽象类中添加一个可选方法,该抽象类由 50 多个类扩展:

public abstract class Animal{...}

并非所有这些类都使用此方法,但将来可能会使用。

我的一个类(class)的结构是:

public class Dog extends Animal {...}

最干净的方法是使用abstract方法,但它迫使我更改所有现有的类。

解决方法是在abstract类中创建“空”方法:

public String getString(Map<String, Object> params){
       return "";
   }

然后当我需要扩展抽象类的类时重写它。

有没有更好的解决办法?

最佳答案

有一个“空”方法就可以了。但为了确保它将在真正需要的地方实现,请考虑默认从此方法抛出异常:

    throw new UnsupportedOperationException();

java.util.AbstractList中使用了类似的方法类:

public E set(int index, E element) {
    throw new UnsupportedOperationException();
}

关于java - 抽象方法与空方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46118777/

相关文章:

c# - 抽象属性或基本构造函数参数?

java - 如何在play 2框架的scala模板页面中显示pdf文件?

java - Android 如何使用 PriorityQueue 读取多个 BLE 特征

java - 基质填充 block

java - 释放按钮后执行操作

javascript - 覆盖 google.com 匿名函数的一部分

java - 在重写后使用 Object 的 hashCode() 和 equals() 实现

python - Django 模型 : How to use mixin class to override django model for function likes save

java - 在Java中为抽象类创建构造函数有什么用?

php - 用于执行 MySQL 和 XML 查找的抽象 PHP 类