Java 将方法调用放入ArrayList?

Java 将方法调用放入ArrayList?,java,arrays,methods,progress-bar,process,Java,Arrays,Methods,Progress Bar,Process,我在Java程序中添加了一个加载条功能,我想知道是否可以设置一个需要完成的进程列表,以便它知道需要完成多少进程 例如,是否将它们保存为字符串 ArrayList<String> processes = new ArrayList<String>(); processes.add("CSVWriter.createFileOfCompany(\"Random Company\");"); processes.add("FileConverter.convertCSVToXL

我在Java程序中添加了一个加载条功能,我想知道是否可以设置一个需要完成的进程列表,以便它知道需要完成多少进程

例如,是否将它们保存为字符串

ArrayList<String> processes = new ArrayList<String>();
processes.add("CSVWriter.createFileOfCompany(\"Random Company\");");
processes.add("FileConverter.convertCSVToXLS(classPath + 
    \"/Output/Random_Company.csv\");");

for (int i = 0; i < processes.size(); i++) {
    // run process
    // update loading bar
}
ArrayList进程=新建ArrayList();
processs.add(“CSVWriter.createFileOfCompany(\“Random Company\”);”);
processs.add(“FileConverter.convertCSVToXLS(classPath+
\“/Output/Random_Company.csv\”;”;
for(int i=0;i
这些不是我的程序的真正方法,但它们与我想要实现的非常相似

我确信这不是最好的方法,但我想有一些方法来创建这样的列表,这样在运行它们之前我就知道有多少进程。我已经建立了一个系统来进一步分解这些进程并显示它们的进度,所以这个条目前非常精确,但我必须对每个进程进行编号=/

也许我没抓住重点。创建进度条对我来说是全新的

如果有任何关于进度条创建的好文章,也可以随意发送给我。请记住,我并没有使用真正的基于swing的GUI。此栏是所有S.O.P文本

非常感谢,


Justin Meyer

闭包有望很快出现在下一版本的Java中,但在此之前,您可以使用匿名类实现已知接口:

List<Runnable> jobs = new ArrayList<Runnable>();

jobs.add(new Runnable() {
    public void run() {
        CSVWriter.createFileOfCompany("Random Company");
    }
});

jobs.add(new Runnable() {
    public void run() {
        FileConverter.convertCSVToXLS(classPath + "/Output/Random_Company.csv");
    }
});

for (Runnable job : jobs) {
    job.run();
}
List jobs=new ArrayList();
jobs.add(新的Runnable(){
公开募捐{
CSVWriter.createFileOfCompany(“随机公司”);
}
});
jobs.add(新的Runnable(){
公开募捐{
convertCSVToXLS(classPath+“/Output/Random_Company.csv”);
}
});
for(可运行作业:作业){
job.run();
}

闭包有望很快出现在下一版本的Java中,但在此之前,您可以使用匿名类实现已知接口:

List<Runnable> jobs = new ArrayList<Runnable>();

jobs.add(new Runnable() {
    public void run() {
        CSVWriter.createFileOfCompany("Random Company");
    }
});

jobs.add(new Runnable() {
    public void run() {
        FileConverter.convertCSVToXLS(classPath + "/Output/Random_Company.csv");
    }
});

for (Runnable job : jobs) {
    job.run();
}
List jobs=new ArrayList();
jobs.add(新的Runnable(){
公开募捐{
CSVWriter.createFileOfCompany(“随机公司”);
}
});
jobs.add(新的Runnable(){
公开募捐{
convertCSVToXLS(classPath+“/Output/Random_Company.csv”);
}
});
for(可运行作业:作业){
job.run();
}

我想到了一个方案:

interface WorkProcess
    void setWorkUnits(int units)
    void setArguments(Object obj1,...)
    void execute()
因此,您将所有任务封装在一个界面中,该界面按照经典的命令模式执行
execute
;它还告诉(见下文)这项工作可能需要多少工作量。您可能需要某种机制将数据传递到这些任务中,以便它们使用

class WorkProcessFactory
    static WorkProcess makeWorkProcess()
    static int getTotalWorkUnitsAllocated()
    static synchronized int reportWorkDone(int units)
    static void addProgressListener(ProgressListener xxx)
当你有工作要做的时候,你要求工厂为你大量生产这些过程中的一种。在此过程中,它对工作单元进行估计,并将其传递给刚刚创建的工作流程。它还记录了这些单位的总数,以设置进度指标的顶部。这样做的一个很酷的副作用是,您不必等待所有作业准备就绪:您可以在每次添加作业时增加进度报告的最大值,即使作业正在处理和新建;你的酒吧将始终显示一个现实的比例

您可以将工作进程塞入某种队列中<如果您的工作流程还实现了
Runnable
接口(这是一个好主意),则会想到code>ExecutorService
。无论执行队列机制支持什么,您都可以通过单个文件或并发顺序处理这些作业

WorkProcess“
execute()
方法基本上包装了
run()
方法(或者反过来,因为executeService需要run()方法,但我们的工作单元魔法在于
execute()
);但当这一切完成后,它会认真地回拨到
reportworkone
,告知它的工作价值的单位数量。在收到这些报告后,工厂有一个已完成工作单位的更新值,它可以将该值报告给监听进程侦听器。这反过来会更新GUI中的栏


完成了。(我想)。可能需要一些改进。

我刚想到一个方案:

interface WorkProcess
    void setWorkUnits(int units)
    void setArguments(Object obj1,...)
    void execute()
因此,您将所有任务封装在一个界面中,该界面按照经典的命令模式执行
execute
;它还告诉(见下文)这项工作可能需要多少工作量。您可能需要某种机制将数据传递到这些任务中,以便它们使用

class WorkProcessFactory
    static WorkProcess makeWorkProcess()
    static int getTotalWorkUnitsAllocated()
    static synchronized int reportWorkDone(int units)
    static void addProgressListener(ProgressListener xxx)
当你有工作要做的时候,你要求工厂为你大量生产这些过程中的一种。在此过程中,它对工作单元进行估计,并将其传递给刚刚创建的工作流程。它还记录了这些单位的总数,以设置进度指标的顶部。这样做的一个很酷的副作用是,您不必等待所有作业准备就绪:您可以在每次添加作业时增加进度报告的最大值,即使作业正在处理和新建;你的酒吧将始终显示一个现实的比例

您可以将工作进程塞入某种队列中<如果您的工作流程还实现了
Runnable
接口(这是一个好主意),则会想到code>ExecutorService。无论执行队列机制支持什么,您都可以通过单个文件或并发顺序处理这些作业

WorkProcess“
execute()
方法基本上包装了
run()
方法(或者反过来,因为executeService需要run()方法,但我们的工作单元魔法在于
execute()
);但当这一切完成后,它会认真地回拨到
reportworkone
,告知它的工作价值的单位数量。在收到这些报告后,工厂有一个已完成工作单位的更新值,它可以将该值报告给监听进程侦听器。反过来,upda