Java Переопределяющая функция, что один из параметров является постоянным в дочернем классе - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть сервис, который читает и записывает данные на основе пар ключ-значение. Служба обобщенная c.

Я хочу реализовать аналогичный класс, который расширяет описанный мной класс , но в базовом классе ключ является константой .

* 1006. * Проблема в том, что если я попытаюсь переопределить функции чтения и записи, у них обоих будет ключевой параметр, хотя он является постоянным.

Как я могу реализовать и переопределить в этом случае? Возможно ли это или только без наследства?

Мой BaseService.java

class BaseService {
    private HashMap<String, String> storage = new HashMap<String, String>();

    void write(String key, String value) {
        storage.put(key, value);
    }

    String read(String key) {
        return storage.get(key);
    }
}

и ChildService.java

class ChildService extends BaseService {
    static final String KEY = 'const-key';
    @override
    void write(String value) {
        storage.put(KEY, value);
    }

    @override
    String read() {
        return storage.get(KEY);
    }
}

Невозможно переопределить этот способ, поскольку подпись теперь другая.

1 Ответ

1 голос
/ 24 апреля 2020

Попробуйте что-то вроде этого:

public abstract class BaseService {
    HashMap<String, String> storage = new HashMap<String, String>();

    abstract String getKey();

    void write(String key, String value) {
        storage.put(key, value);
    }

    String read(String key) {
        return storage.get(key);
    }

    String read() {
        return storage.get(getKey());
    }

    void write(String value) {
        storage.put(getKey(), value);
    }

}

public class ChildService extends BaseService {

    static final String KEY = "const-key";

    @Override
    String getKey() {
        return KEY;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...