![]() |
1
8
与其传入要实例化的列表类型,不如直接传入要填充的空集合<t>?这给了API的用户更多的灵活性,因为使用默认的构造函数并不总是理想的。(例如,也许我想要一个我提供预期元素数量的集合,或者我想要一个排序列表,我在其中提供比较器)。 另外,作为补充说明,您应该始终编程到尽可能通用的接口。在这种情况下,输入只需要一个iterable,输出一个集合。 鉴于此,我将以这种方式编写方法--
然后调用代码如下:
这里有2条评论:
|
![]() |
2
13
我会用
Guava
及其
Iterables.filter(Iterable,Class)
方法和工厂方法
这将实际检查原始列表中的每个对象,结果列表将只包含属于给定类型的实例的元素。(
|
![]() |
3
3
再一次,但允许更多的控制转换,如果它比演员或其他更复杂。
|
![]() |
4
2
您有一个运行时问题,所以它应该独立于泛型。在运行时,任何时候“都是一个对象”。如果无法实例化
所以解决问题的方法不在这个方法之内。称之为
不应该给出运行时错误。 现在我手头有日食。以下代码编译,没有警告,应该满足您的要求:从非类型化列表转换为类型化列表。
|
![]() |
5
1
这个
对于记录,这些异常会在各种情况下抛出;例如
这实际上与这个方法是通用的以及相关的类型问题无关。 |
![]() |
6
0
我不相信你想做的是可能的。这是因为仿制药的作用: 在编译时,将检查类型化列表的所有输入类型,并将所有输出对象强制转换为列表的类型,从那时起,我们将讨论一个非类型化的“列表”。不幸的是,泛型只是句法上的糖分。 |
![]() |
7
0
你想实现什么?这样的代码:
只是工作。它会产生警告,但会起作用。然而,有可能在
|
![]() |
8
0
请不要对这样的事情使用反射! 我会把它当作一个转换的例子。也许有点像
使用工厂
|
![]() |
9
0
如果你不想得到警告,也不想使用谷歌的番石榴,你必须自己实现类似番石榴的东西。例如。:
这个实现只是commits元素,它不是t的实例,但是您也可以抛出异常,或者做任何您想要做的事情。 |
![]() |
Dave · 如何在for循环中修改列表值 5 月前 |
![]() |
matteo panaro · 向列表中添加项目 6 月前 |
![]() |
Bioinfotec · 如何在R中将两个嵌套列表合并为一个列表? 6 月前 |
![]() |
Pernoctador · Python映射可以复制吗?我需要参考地图 6 月前 |
![]() |
Bogaso · 从列表中返回与模式匹配的元素 7 月前 |
![]() |
Tom Hunter · Excel验证列表中的条目 7 月前 |
![]() |
Estrobelai · Python:数组中价格高于平均值的所有项目 10 月前 |