我想实现一个基本的类来创建,读取,更新和删除对象。我确信我可以找到一个图书馆来做到这一点,但我自己做这件事是为了教育目的。Java重复通用定义
所以我把它说的是得救的一切都是实体,他们有一个特定类型的标识符:
interface Entity<T extends Serializable> extends Serializable
{
T getIdentifier();
}
实体是序列化和识别码,以及。然后,我有我的EntityPersistor
这应该保存实体从他们的内容(使用序列化)并从他们的密钥命名。我现在唯一执行的这个方法是将它们保存在磁盘上。它使用标识符作为文件的名称来保存它。
这里是我的实体persistor:
interface EntityPersistor<K extends Serializable, T extends Entity<K>> extends Iterable<T>
{
void save(T entity);
void delete(T entity);
void deleteById(K id);
T getById(K id);
boolean contains(K id);
List<T> loadAll();
}
所以,问题是我必须重新定义该键的类型两次时,我想使用它。我想写:
interface EntityPersistor<T extends Entity<K extends Serializable>> extends Iterable<T>
但它会产生编译器错误。所以我必须这样使用:
EntityPersistor<String, Product> persistor = new FileEntityPersistor<>();
这是不方便的。
有没有解决方法或更好的方法来做到这一点?我觉得这会让我的声明更不可读,但使用更重要。
编辑:
我忘了提,class Product implements Entity<String>
是不是假设'Product'是一个实体'? –
Zircon
@Zircon是的,编辑了这个问题 – Winter