如何从另一个类运行一个类

时间:2015-03-23 19:24:19

标签: java sql class arraylist erd

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

中有一个主要课程

我想从SQL

运行erdbuilder

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

以下是从SQL

调用erdbuilder类的代码的一部分
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课程。

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类时,它不会调用sql类。怎么了?有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

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

}



}
}

答案 1 :(得分:1)

这个问题很模糊,因为没有“跑”课的概念。我不确定你的意思是“当我运行erdbuilder类时,它不会调用sql类”。你究竟在跑什么?

从erdbuilder的片段中,您确实正在创建SQL的实例并调用其display方法。但是,有一点看起来非常奇怪的是,在display内部,您正在创建一个新的空连接列表,然后迭代它,期望找到一些元素。此列表是新创建的,并且始终为空,因此代码实际上永远不会执行任何操作。您似乎打算将您在erdbuilder中创建的列表作为参数传递给display方法......?

答案 2 :(得分:1)

您必须将List传递给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();   

这取决于需要访问此List的其他SQL方法。否则将其作为参数传递给显示器可能更合适。