我有一个基于键值对读写数据的服务。这个服务是通用的。
我想实现一个类似的类,它扩展了我所描述的类。但在基类中,键是常数.
问题是,如果我试图覆盖读写函数,它们都会有关键参数,尽管它是const。
在这种情况下,我如何实现和覆盖?是可以实现还是只能不继承?
我的 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);
}
}
由于现在的签名不同,所以不可能这样覆盖。
试试这样的方法。
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;
}
}