Java 将ArrayList引用传递给另一个类

Java 将ArrayList引用传递给另一个类,java,reference,arraylist,Java,Reference,Arraylist,我知道在Java中对象是作为引用传递的。 那么,这样做正确吗?ArrayList在父过程中创建,然后传递给另一个类中的过程以在其中创建新的元素集 class DO_Thing { private static ArrayList<ElementClass> fr = new ArrayList<>(); public static void do_main() { fr= Functions.add_elements(fr); } } public cl

我知道在Java中对象是作为引用传递的。 那么,这样做正确吗?ArrayList在父过程中创建,然后传递给另一个类中的过程以在其中创建新的元素集

class DO_Thing {
 private static ArrayList<ElementClass> fr = new ArrayList<>();

 public static void do_main() {
    fr= Functions.add_elements(fr);
 }
}

public class Functions {
     public static ArrayList<ElementClass> add_elements(ArrayList<ElementClass > frk) {
        ElementClass ier;
        ResultSet zuzis;
        frk.clear();
        zuzis = dbini.db_getallrow("frakcijas");
        try {
            while (zuzis.next()) {
                ier = new Frakcijas();
                ier.frid = zuzis.getInt("frakcijas_id");
                ier.frnos = zuzis.getString("nosaukums");
                frk.add(ier);
            }
        } catch (SQLException a) {
            System.out.println(a);
        }
        return frk;
    }
}
class做什么{
私有静态ArrayList fr=新ArrayList();
公共静态void do_main(){
fr=函数。添加元素(fr);
}
}
公共类功能{
公共静态ArrayList添加元素(ArrayList frk){
元素类;
结果祖兹组;
frk.clear();
zuzis=dbini.db_getallrow(“frakcijas”);
试一试{
while(zuzis.next()){
ier=新的Frakcijas();
ier.frid=zuzis.getInt(“frakcijas_id”);
ier.frnos=zuzis.getString(“nosaukums”);
frk.添加(ier);
}
}捕获(SQLA异常){
系统输出打印项次(a);
}
返回frk;
}
}

在功能上,是的。这是对象构造模式的变体

  • 对象不会作为引用传递,但传递的是引用的值
  • 您的代码可以工作,但在调用
    ielikt\u frakcijas()
    方法时,无需传递空的
    ArrayList
    ,因为您只需
    清除它
  • 您可以做什么:

    public static ArrayList<Frakcijas> ielikt_frakcijas() {
       Frakcijas ier;
       ResultSet zuzis;
       ArrayList<Frakcijas> result = new ArrayList<Frakcijas>();
       zuzis = dbini.db_getallrow("frakcijas");
       try {
           while (zuzis.next()) {
               ier = new Frakcijas();
               ier.frid = zuzis.getInt("frakcijas_id");
               ier.frnos = zuzis.getString("nosaukums");
               result.add(ier);
           }
       } catch (SQLException a) {
           System.out.println(a);
       }
       return result;
    }
    

    您所有的标识符都使用了错误的语言。“我知道对象在Java中是作为引用传递的”-不,传递的是引用的值,而不是引用本身。不,Java是按值传递的。对于传递到方法中的Java引用和参数,这是一个很好的答案。您正在做的很好(获取一个参数并返回结果)。是的,引用值已传递,我现在明白了。谢谢,我以前没有想到这一点。
    frakcijas = Funkcijas.ielikt_frakcijas();