如何 运行 来自另一个 class 的 class

How to run a class from another class

我有一个 class erdbuilder 和另一个 class SQL。我的 erdbuilder class 允许我绘制形状并将它们存储在数组列表 Connection 中。然后我从 SQL class 访问数组列表 Connection ,我将从数组列表中检索数据。我在 erdbuilder class

中有一个主要 class

我想运行 SQL class 从 erdbuilder class

我有这个来访问我的 SQL class 但我不确定这是否是正确的方法。

这是我从 erdbuilder class[=30= 调用 SQL class 的部分代码]

if ((rect != null) && (ell != null)) {
con.add(new Connection(rect,ell));
System.out.println("Size of ArrayList <Connection> is:" + con.size());                                   
                                SQL sql = new SQL();
                                sql.display();                                                                      
                            }

这是我的 SQL class.

package project;
import java.awt.Shape;
import java.util.ArrayList;
import project.ERDBUILDER.DrawingBoard.Attribute;
import project.ERDBUILDER.DrawingBoard.Connection;
import project.ERDBUILDER.DrawingBoard.NamedShape;


public class SQL {    

    public void display() {
        ArrayList<Connection> con = new ArrayList<>();

        for (int a = 0; a < con.size(); a++) {
                                    NamedShape f = con.get(a).getNamedShape1();
                                    Attribute g = con.get(a).getNamedShape2();
                                    String i = f.getName();
                                    String j = g.getName();

                                    Shape y = f.getShape();
                                    Shape y1 = g.getShape();
                                    System.out.println(i + " AND " + j + " are linked");

    }



}
}

实际上当我 运行 erdbuilder class 时,它并没有调用 sql class。怎么了?谁能帮我解决这个问题?

这个问题很模糊,因为没有 "running" 和 class 的概念。我不确定你的意思 "when I run the erdbuilder class, it's not calling the sql class"。你到底是什么人 运行?

从 erdbuilder 的片段中,您确实在创建 SQL 的实例并调用其 display 方法。然而,有一件看起来很奇怪的事情是,在 display 中,您正在创建一个新的空连接列表,然后遍历它,期望找到一些元素。这个列表是新创建的,永远是空的,所以代码实际上不会做任何事情。您似乎打算将在 erdbuilder 中创建的列表作为参数传递给 display 方法...?

您必须将列表传递给 SQL:

public class SQL {    
    private List<Connection> con;
    public SQL( List<Connection> con ){
        this.con = con;
    }
    public void display() {
        // ArrayList<Connection> con = new ArrayList<>();

并创建一个 SQL 对象并从 erdbuilder 传递列表。

SQL sql = new SQL( con );
sql.display();   

这取决于 SQL 的其他方法也需要访问此列表。否则将它作为参数传递只是为了显示可能更可取。

display() 中,您正在迭代一个空列表。更改方法以接受 List 类型的参数,然后在调用它时传递 con(您的 ArrayList)。

这是您按照说明编辑的片段:

if ((rect != null) && (ell != null)) {
con.add(new Connection(rect,ell));
System.out.println("Size of ArrayList <Connection> is:" + con.size());                                   
                            SQL sql = new SQL();
                            sql.display(con);                                                                      
                        }

...

package project;
import java.awt.Shape;
import java.util.List;
import project.ERDBUILDER.DrawingBoard.Attribute;
import project.ERDBUILDER.DrawingBoard.Connection;
import project.ERDBUILDER.DrawingBoard.NamedShape;


public class SQL {    

public void display(List<Connection> con) {

    for (int a = 0; a < con.size(); a++) {
                                NamedShape f = con.get(a).getNamedShape1();
                                Attribute g = con.get(a).getNamedShape2();
                                String i = f.getName();
                                String j = g.getName();

                                Shape y = f.getShape();
                                Shape y1 = g.getShape();
                                System.out.println(i + " AND " + j + " are linked");

}



}
}