gpt4 book ai didi

java - 在方法中初始化Arraylist

转载 作者:行者123 更新时间:2023-12-01 11:29:28 25 4
gpt4 key购买 nike

以下问题。我有大量ArrayList attributes (基本上与 Kreuzlagerort20kg 等相同)。我不想在构造函数中初始化它们(注释掉的部分),而是在 fillLager() 中初始化它们。方法,使得可以调用构造函数内的方法并初始化和填充它们。如果我在代码中这样做,我总是会得到一个空指针异常。

是否可以和/或明智地在方法内初始化数组列表,而不会出现空指针?

import java.util.ArrayList;
public class Lager {
private ArrayList<Screws> KreuzLagerort20kg,KreuzLagerort50kg;

public Lager(){
//KreuzLagerort20kg = new ArrayList<Screws>();
//KreuzLagerort50kg = new ArrayList<Screws>();

fillLager(1,KreuzLagerort20kg,20);
fillLager(1,KreuzLagerort50kg,50);
}

public void fillLager(int typ,ArrayList<Screws> lager,double lagerGewicht){

lager = new ArrayList<Screws>();

// code that loops through combinations and adds them to the arraylist
}}}}}}

最佳答案

您不能对传递到方法的变量调用new,并且仍然让调用方法引用原始变量,因为 Java 通过引用传递。当您调用 new X() 时,就会有一个新的引用,并且调用其他方法的方法将不知道该变量现在指向另一个引用...

例如

public void methodA() {
String s = new String("AAAAA");
methodB(s);
System.out.println(s);
}

public void methodB(String referredString) {
referredString = new String("BBBBB");
}

调用methodA将打印“AAAAA”

您需要在构造函数中进行初始化,或者使该方法返回您传入的变量...

public void methodA() {
String s = new String("AAAAA");
s = methodB(s);
System.out.println(s);
}

public String methodB(String referredString) {
referredString = new String("BBBBB");
return referredString ;
}

调用methodA现在将打印“BBBBB”

或者 - 在任一方法之外声明字符串,并且根本不传递它......例如

String s = new String("AAAAA");
public void methodA() {
methodB();
System.out.println(s);
}

public void methodB() {
s = new String("BBBBB");
}

也会产生“BBBBB”

关于java - 在方法中初始化Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30532806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com