我目前正在学习 Java 类(class),本类(class)涵盖通过 ArrayList
对象通过静态方法。在第一个静态方法中,您会看到 ArrayList
只需声明为 ArrayList
,以及它的名称。第一个静态方法显示数组中的所有元素。第二个静态方法更改 ArrayList
的元素。声明 ArrayList
时在此方法中,必须将其声明为 ArrayList<Integer>
用于修改目的。为什么会这样,为什么会有不同?感谢任何愿意阐明这一点的人。
import java.util.ArrayList;
public class Chap11Part5
{
public static void main(String[] args)
{
ArrayList<Integer> numbers = new ArrayList<Integer>();
//For-Loop to create elements for the ArrayList
for (int i = 1; i < 11; ++i)
numbers.add(i);
display(numbers); //Display Elements
change(numbers, 5); //Change Elements (See "change" method)
display(numbers); //Display New Results
}
//Loop to display elements of ArrayList
static void display(ArrayList arr) {
for(int i = 0; i < arr.size(); ++i)
System.out.print(arr.get(i) + " ");
System.out.println();
}
//Loop to change elements of ArrayList
static void change(ArrayList<Integer> arr, int amount) {
int value;
for(int i = 0; i < arr.size(); ++i) {
value = arr.get(i);
arr.set(i, value + amount);
}
}
}
最佳答案
<>
语法称为 generics - 它允许您限制集合包含的元素类型,并通过此类型引用它们。这不是必需的,只是更方便。
例如,您可以编写第二个方法而不指定任何泛型,但您必须自己处理转换:
static void change(ArrayList arr, int amount) {
int value;
for(int i = 0; i < arr.size(); ++i) {
value = (Integer) arr.get(i); // explicit casting here. Yuck!
arr.set(i, value + amount);
}
}
关于java - 为什么我们应该在 Java 中使用特定类型的 List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30603429/