【问题标题】:How to migrate the data of my arraylist from one class to another class如何将我的arraylist的数据从一个类迁移到另一个类
【发布时间】:2015-03-23 06:04:33
【问题描述】:

所以我有一个ERDBUILDER.java 类是一个绘图面板,它允许我绘制存储在数组列表Connection 中的形状。我想从另一个类 SQL.java 访问这个 arraylist 并基于 arraylist 创建我的 sql 语句。我已经尝试了下面的代码,但我不知道主类应该是怎样的。我试图将new SQL(); 放在主类中,但它正在打开另一个ERDBUILDER.java 类,这不是我想要的。 那么我该如何运行这个,主类应该如何?

已编辑 有人可以帮忙吗?

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


public class SQL {

public static void main(String args[]){
       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.java 类,这不是我想要的”。这让我觉得你在其他地方已经有另一个 main 正在创建你想要的 ERDBUILDER 对象。这使我认为您对对象如何相互访问有误解。每次您使用main 运行新的java 进程时,该进程都是自包含的,无法访问在另一个进程中创建的对象。你想“负责”哪个班级?如果要在ERDBUILDER 中运行main,则需要在此处实例化SQL 表单,否则反之亦然。
  • @JRichardSnape 我的目标是在我绘制好形状并将其保存到ERDBUILDER.java 的数组列表中之后,然后我启动SQL.java 它将分析数组列表的数据,而不是显示。我想让SQL.java 在后台运行。只是建议我应该怎么做?
  • @JRichardSnape 我在ERDBUILDER.java 中有一个主线程,SQL.java 中有另一个主线程。好吧,我认为SQL.java 应该有一个 main 才能运行。
  • 我想你现在已经得到了这个问题和其他问题的答案,对吧?您对它的工作方式感到满意 - 您不需要在两个课程中都使用 main()
  • @J Richard Snape 不,我实际上只需要我的 ERDBUILDER.java 中的主类,而不需要 SQL.java。嗯,现在,在 SQL.java 中没有 main 很好

标签: java arraylist geometry migration erd


【解决方案1】:

创建要在其中创建 SQL 语句的类的实例,并将 Connection ArrayList 传递给该类。

List<Connection> con = new ArrayList<>();
ERDBuilder x = new ERDBuilder(con);

您的 ERDBuilder 构造函数可以采用 List 对象并使用它来构建 SQL 语句。或者您甚至可以在 ERDBuilder 的方法中执行此操作。那是你的选择。

ERDBuilder x = new ERDBuilder();
List<Connection> con = new ArrayList<>();
x.buildSql(con);

如果您想从 main 执行此操作,则必须将 List 声明为 Class 级变量,就像您对 ERDBuilder 所做的那样。

【讨论】:

  • 我的目标是在我绘制好形状并将其保存到ERDBUILDER.java 的arraylist 中之后,然后我启动SQL.java,它将分析arraylist 的数据,而不显示它。我想让SQL.java 在后台运行。只是建议我应该怎么做?
  • 基于其他 cmets 和 this,如果您有两个主要功能,则取决于您使用 java Classname 命令运行的类。根据您的要求,您只需要 ERDBuilder 中的 main,然后将 ArrayList 传递给 SQL 类。我已经在上面解释了如何执行此操作,您只需根据需要更改类名即可。
  • 感谢您的回复,很抱歉花时间了解。你能告诉我上面的代码有什么问题吗?我应该删除什么?我将不得不删除主要课程,但还有什么?我已经将我的 Arraylist 从 ERDBUILDER 类传递到 SQL 类(代码嗅探) 我接下来应该做什么?我很困惑。
  • 不要删除主类,只删除方法。您根本不需要 SQL 类中的 ERDBuilder,因为 ERDBuilder 正在调用 SQL,SQL 中的 ERDBuilder 没有用处。除此之外,您还必须进行自己的研究并通过犯一些错误并在遇到困难时提出更多问题作为新帖子来学习。
  • 所以我的 SQL 类看起来像上面编辑的代码?
猜你喜欢
  • 1970-01-01
  • 2017-10-19
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多