Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我们要在Java中使用特定类型的列表_Java_Methods_Arraylist_Static_Format - Fatal编程技术网

为什么我们要在Java中使用特定类型的列表

为什么我们要在Java中使用特定类型的列表,java,methods,arraylist,static,format,Java,Methods,Arraylist,Static,Format,我目前正在学习Java课程,本课程将介绍如何通过静态方法传递ArrayList对象。在第一个静态方法中,您可以看到ArrayList只需声明为ArrayList,并为其命名。第一个静态方法显示数组中的所有元素。第二个静态方法更改ArrayList的元素。在此方法中声明ArrayList时,必须将其声明为ArrayList,以便进行修改。为什么会这样,为什么会有不同?谢谢大家愿意解释这件事 import java.util.ArrayList; public class Chap11Part5

我目前正在学习Java课程,本课程将介绍如何通过静态方法传递
ArrayList
对象。在第一个静态方法中,您可以看到
ArrayList
只需声明为
ArrayList
,并为其命名。第一个静态方法显示数组中的所有元素。第二个静态方法更改
ArrayList
的元素。在此方法中声明
ArrayList
时,必须将其声明为
ArrayList
,以便进行修改。为什么会这样,为什么会有不同?谢谢大家愿意解释这件事

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);
        }
    }

}
import java.util.ArrayList;
公共课第11章第5部分
{
公共静态void main(字符串[]args)
{
ArrayList编号=新的ArrayList();
//For循环为ArrayList创建元素
对于(int i=1;i<11;++i)
增加(i);
显示(数字);//显示元素
更改(数字,5);//更改元素(参见“更改”方法)
显示(数字);//显示新结果
}
//循环以显示ArrayList的元素
静态空白显示(ArrayList arr){
对于(int i=0;i
调用
语法-它允许您限制集合包含的元素类型,并通过此类型引用它们。这不是必需的,只是更方便而已

例如,您可以在不指定任何泛型的情况下编写第二个方法,但您必须自己处理转换:

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);
    }
}
静态无效更改(ArrayList arr,整数金额){
int值;
对于(int i=0;i
这是一个例子。如果声明为类型,则集合将只接受该类型的元素

这解决了处理ClassCastException问题的问题,而我们过去常常明确地处理强制转换

 value = (Integer) arr.get(i);

为特定类型(即您提到的
ArrayList
)创建
列表
,将消除运行时发生
ClassCastException
的风险

我想知道为什么它显示为ArrayList。我不明白为什么在我的问题中,它没有以正确的方式出现。很抱歉,这段代码使用的是原始类型,不应该这样。请阅读,如果我理解您的意思,我在方法内部声明时从未使用过“ArrayList”。我仍然不太明白“(整数)”是否有必要。行是否可以写为“value=arr.get(i);”或者必须在方法中的某个位置声明整数?您需要转换为
integer
,以便在定义
value
时,可以将值取消绑定到
int
。如果您不需要对它执行数学运算,那么肯定可以使用
Object value=arr.get(i)
@JeffSours,您永远不应该使用原始类型。使用
ArrayList
ArrayList
,但不要使用
ArrayList
。请阅读我作为对您问题的评论发布的链接。谢谢!我现在明白你的意思了。