|
| 1 | +《《《 [返回首页](../README.md) <br/> |
| 2 | +《《《 [上一节](07_How_to_Define_ArrayList.md) |
| 3 | + |
1 | 4 | ## 数组创建和可变参数
|
2 | 5 |
|
3 | | -方便的变量表示法允许方法接受可变数量的参数并将它们打包到数组中,如 `1.4` 节所述。 这种表示法并不像你想要的那样方便,因为它创建的数组受到与其他数组相同的涉及到物化的问题的困扰。 |
| 6 | +方便的变量表示法允许方法接受可变数量的参数并将它们打包到数组中,如 `1.4` 节所述。 这种表示法并不像你想要的那样方便,因为它创建的数组受到与其他数组相 |
| 7 | +同的涉及到物化的问题的困扰。 |
4 | 8 |
|
5 | 9 | 例 `6-2`。 如何定义 `ArrayList`
|
6 | 10 |
|
|
96 | 100 |
|
97 | 101 | 这也会产生警告,出于同样的原因可能会造成混淆。
|
98 | 102 |
|
99 | | -通常,通用阵列创建报告错误。作为一种解决方法,可以创建一个可修饰类型的数组,并执行未经检查的转换。该变通方法不适用于可变参数使用中隐含的数组创建,因此在这种情况下,通用数组创建会发出警告而不是错误。通用数组创建警告就像未经检查的警告一样,因为它会使伴随泛型的铸铁保证失效。将前面的每个示例都作为未经检查的警告的结果,并不难,并创建一个使用可变参数的类似示例,其中发出通用数组创建警告。 |
100 | | - |
101 | | -在我们看来,可变参数提供的便利性超过了未经检查的警告中固有的危险,并且我们建议您在参数不可接受时避免使用可变参数。例如,在前面的两个例子中,我们不是使用 `Arrays.asList`,而是创建一个新的 `ArrayList` 并使用 `add`方法,即使这样做不太方便也不那么高效。 |
102 | | - |
103 | | -如果可变参数符号已被定义为将参数打包到列表而不是数组中,那么就不会出现通用数组创建警告和相关变通方法的需要,因为 `T ...` 等同于 `List<T>` 而不是 `T[]`。不幸的是,可变参数表示法是在完全理解这个问题之前设计的。 |
104 | | - |
105 | | - |
106 | | - |
107 | | - |
108 | | - |
109 | | - |
110 | | - |
111 | | - |
112 | | - |
113 | | - |
114 | | - |
115 | | - |
116 | | - |
117 | | - |
118 | | - |
119 | | - |
120 | | - |
121 | | - |
122 | | - |
123 | | - |
124 | | - |
125 | | - |
126 | | - |
127 | | - |
128 | | - |
129 | | - |
130 | | - |
131 | | - |
132 | | - |
133 | | - |
134 | | - |
135 | | - |
136 | | - |
137 | | - |
138 | | - |
139 | | - |
140 | | - |
141 | | - |
142 | | - |
143 | | - |
144 | | - |
145 | | - |
146 | | - |
147 | | - |
148 | | - |
149 | | - |
150 | | - |
151 | | - |
152 | | - |
153 | | - |
154 | | - |
155 | | - |
156 | | - |
157 | | - |
158 | | - |
159 | | - |
160 | | - |
161 | | - |
162 | | - |
163 | | - |
164 | | - |
165 | | - |
166 | | - |
167 | | - |
168 | | - |
169 | | - |
170 | | - |
171 | | - |
172 | | - |
173 | | - |
174 | | - |
175 | | - |
176 | | - |
177 | | - |
178 | | - |
179 | | - |
180 | | - |
181 | | - |
182 | | - |
183 | | - |
| 103 | +通常,通用阵列创建报告错误。作为一种解决方法,可以创建一个可修饰类型的数组,并执行未经检查的转换。该变通方法不适用于可变参数使用中隐含的数组创建,因 |
| 104 | +此在这种情况下,通用数组创建会发出警告而不是错误。通用数组创建警告就像未经检查的警告一样,因为它会使伴随泛型的铸铁保证失效。将前面的每个示例都作为未 |
| 105 | +经检查的警告的结果,并不难,并创建一个使用可变参数的类似示例,其中发出通用数组创建警告。 |
184 | 106 |
|
| 107 | +在我们看来,可变参数提供的便利性超过了未经检查的警告中固有的危险,并且我们建议您在参数不可接受时避免使用可变参数。例如,在前面的两个例子中,我们不是 |
| 108 | +使用 `Arrays.asList`,而是创建一个新的 `ArrayList` 并使用 `add`方法,即使这样做不太方便也不那么高效。 |
185 | 109 |
|
| 110 | +如果可变参数符号已被定义为将参数打包到列表而不是数组中,那么就不会出现通用数组创建警告和相关变通方法的需要,因为 `T ...` 等同于 `List<T>` 而不是 |
| 111 | +`T[]`。不幸的是,可变参数表示法是在完全理解这个问题之前设计的。 |
186 | 112 |
|
| 113 | +《《《 [下一节](09_Arrays_as_a_Deprecated_Type.md) <br/> |
| 114 | +《《《 [返回首页](../README.md) |
0 commit comments