嘿,我正在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
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,由于运行时类型擦除,这是不可能的.我不喜欢构造函数方法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
}
Run Code Online (Sandbox Code Playgroud)
您将拥有一个仅获取结果数据的构造函数。这将使这些方法将构建什么变得更加清晰。