|
|
1
14
factory pattern 而不是直接实例化特定的列表实现。然后,您只需要在工厂方法内部的一个地方更改列表实现。 例如,您可以从以下内容开始:
|
|
2
8
就我理解你的问题而言,你想做的已经是可能的了(与泛型无关)。
总是
在实际进行构造函数调用时,需要给出列表(或任何类)的确切类型,这是不可避免的。同样,您可以在其他任何地方避免细节(将其存储在变量中、从方法返回、将其作为方法参数传递等)。在您的情况下,您已经这样做了-通过声明
我想你的问题可能是因为你在同一个类中创建了两个不同的列表(但都是同一类型的),你想把它抽象出来。使用工厂类型模式可以很容易地做到这一点;或者是一个单独的工厂,或者在您的情况下,只是更换
编辑-出于兴趣,最接近您最初建议的修复方法是使用反射:
双重编辑:哦,你必须处理一大堆基于反射的检查异常,我把它们作为练习留给读者,以防你受到诱惑。;-) |
|
|
3
5
|
|
|
4
3
这实际上与泛型无关,而是与 polymorphism
使用的意义
在您的示例中,为什么需要将
一般来说,多态性的一般目的和接口的具体目的是
客户
数据对象的(“使用者”)不需要知道实现细节。然而,代码
创造
(“products”)您的对象应该能够知道实现细节(因为它正在填充对象)。因此,让对象创建代码知道它正在创建
|
|
|
5
0
实例化“参数化”列表实现的唯一方法是通过反射,但您肯定迈出了正确的第一步,返回列表接口而不是复杂的类。一些可行的想法:
然而,Idea#2需要反射来实例化列表实现,这可能不是您想要的。 |
|
|
6
0
如果列表中的“数组”或“链接”部分对您的实现很重要,那么就公开它。如果它不重要,那就不要。 你 能够 具有如下界面:
如果出于某种原因,清单的实施非常重要。返回“List”是一种很好的做法,因为您需要的只是List本身,在这种情况下,实现就不那么重要了。 |
|
|
7
0
他们走这条路 我 理解您的问题(尽管我可能弄错了;您的问题不是很清楚),您只是在搜索一个泛型方法的正确语法,该方法如下所示:
注意前面的
|
|
|
8
0
如果不初始化myList,则只需在一个位置进行更改。当然,除非您需要使用ArrayList特有的任何方法。。。
|
|
|
9
0
现在您只需在一个位置更改类型。 |