嘿,我正在用两种不同类型的初始化列表初始化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
}

您将拥有一个仅接收结果数据的构造函数。这将使方法的构建更加清晰。

09-04 05:44