嘿,我正在用两种不同类型的初始化列表初始化ListRepository
。最好的方法是这样的。
public ListRepository(String id, List<PrimaryKey> initilizationList)
{
// Load objects from data source via primary key.
}
public ListRepository(String id, List<DomainObject> initilizationList)
{
// Store objects directly
}
不幸的是,由于运行时类型擦除,这是不可能的。我不喜欢使用
List<?>
作为参数的构造方法,这导致对第一个条目进行难看的instanceof
检查,以确定列表类型并对其进行处理。您如何使用直观,简洁的API解决此类问题?
最佳答案
构造函数所做的工作远远不止初始化对象。最好使构造函数保持简单。
我将使用静态方法来执行每个查询。
public static ListRepository<PrimaryKey> loadFromPrimaryKey(String id, List<PrimaryKey> initilizationList) {
// Load objects from data source via primary key.
}
public static ListRepository<PrimaryKey> loadFromDomainObject(String id, List<DomainObject> initilizationList) {
// Store objects directly
}
您将拥有一个仅接收结果数据的构造函数。这将使方法的构建更加清晰。