我有一个班级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
类。怎么了?有人可以帮我解决这个问题吗?
答案 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方法。否则将其作为参数传递给显示器可能更合适。