如何使用不同类型的列表初始化对象? - java

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

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

Java:我可以在Hashmaps中使用数组吗? - java

我可以在Hashmaps中使用数组吗?如果是这样,则声明这种哈希图的确切语法是什么?谢谢 参考方案 数组也是对象。甚至像int[]这样的原始数组。Map<String,String[]> map = new HashMap<String,String[]>();

与哪些运算符>>兼容 - java

我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…

Java中的<<或>>>是什么意思? - java

This question already has answers here: Closed 7 years ago. Possible Duplicate: What does >> and >>> mean in Java?我在一些Java代码中遇到了一些陌生的符号,尽管代码可以正确编译和运行,但对于括号在此代码中的作用却感…

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …