与此相关的帖子太多了,我认为参考它们不会有帮助,但是如果人们发现特别有用的帖子,将它们添加到这里会很棒。
ArrayList<Integer> readIntegersFrom(Scanner scnr) {
ArrayList<Integer> lst = new ArrayList<Integer>();
while (scnr.hasNext()) {
lst.add(scnr.nextInt());
}
return lst;
}
整数出现在 4 个地方:
- 方法的名称
- ArrayList 返回类型的 Type 参数
- lst 的类型的 Type 参数
- 创建新列表的 Type 参数
到目前为止,一切都很好。然而,我的程序重复了这个方法四次(我敢肯定,还会有更多),每一次都有不同的类型参数和 Scanner 方法。(例如,ArrayList<Double>
和scnr.nextDouble()
。)
我不怀疑我混淆了我使用过的许多其他语言的想法和技术,但是有什么方法可以概括这种方法,所以我可以告诉它我想要一个 ArrayList,比如说,Double,它应该使用 Scanner .nextDouble()?这个问题的两个部分是 (a) 传递 ArrayList 的类型参数和 (b) 传递要使用的 Scanner 方法。
我会选择一个方法,其中指定或推导类型参数,并有一个枚举参数来告诉扫描仪使用哪种方法,尽管两者是直接连接的。