Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java变量覆盖_Java_Overwrite - Fatal编程技术网

Java变量覆盖

Java变量覆盖,java,overwrite,Java,Overwrite,我有一个带有for的程序,它从Arraylist中提取字符串,拆分它们并将它们发送给工人类 工人阶级: public class WorkerRSR extends SwingWorker<String, Void>{ private static String urlFrames; private static String urlImg; public static int bool; public static int dist; public static int numI;

我有一个带有for的程序,它从Arraylist中提取字符串,拆分它们并将它们发送给工人类

工人阶级:

public class WorkerRSR extends SwingWorker<String, Void>{
private static String urlFrames;
private static String urlImg;
public static int bool;
public static int dist;
public static int numI;
public static int spra;
public static boolean isCoda;
public static int numCoda;
public static String algo;

public WorkerRSR(String urlImg, int dist, int numI, int spra, String algo, String urlFrames, boolean isCoda, int numCoda) {
    this.urlImg=urlImg;
    this.dist=dist;
    this.numI=numI;
    this.spra=spra;
    this.algo=algo;
    this.urlFrames=urlFrames;
    this.isCoda = isCoda;
    this.numCoda = numCoda;

//FIRST CHECK POINT

}

    @Override
    protected String doInBackground() throws Exception {
        PanelRSR_LRSR.getProgessbar().setIndeterminate(true);
        go();
        return  "";
    }

    @Override
    protected void done() {
        System.out.println("Algoritmo RSR esguito");
        if(isCoda){
            CreateOption.codaCont++;
            System.out.println("RSR codaCont: "+CreateOption.codaCont);
            if(CreateOption.codaCont==CreateOption.csize){
                JOptionPane.showMessageDialog(null,"Coda Eseguita", "Attenzione",JOptionPane.WARNING_MESSAGE);
                PanelRSR_LRSR.getProgessbar().setIndeterminate(false);
            }
        }
        else{
            PanelRSR_LRSR.getProgessbar().setIndeterminate(false);
            JOptionPane.showMessageDialog(null,"Finito RSR", "Attenzione",JOptionPane.WARNING_MESSAGE);
        }
    }

    public static void go() throws IOException{
        System.out.println("ESEGUO RSR, attendi...");

//SECOND CHECK POINT

        System.out.println("RSR n = "+numI+" codaCont: "+CreateOption.codaCont+" numCoda = "+numCoda);
        while(true){
            if(numCoda==CreateOption.codaCont)
                break;
        }
        MakeRSR m=new MakeRSR();
        String name = urlImg.substring(urlImg.lastIndexOf("\\"),urlImg.lastIndexOf("."));
        String output=name.substring(1); //?
        String urlOutput=urlFrames+"\\finalRSR\\"+name+"-"+algo+"-dist"+dist+"-n"+numI+"-N"+spra+".png";
        m.RSR(urlImg,urlOutput,dist,numI,spra);
    }
}
公共类WorkerRSR扩展SwingWorker{
私有静态字符串帧;
私有静态字符串urlImg;
公共静态文件;
公共静态区;
公共静态整数;
公共静态int spra;
公共服务和官方发展援助;
努姆科达公共图书馆;
公共静态字符串算法;
public WorkerRSR(字符串urlImg、int dist、int numI、int spra、字符串algo、字符串urlFrames、布尔isCoda、int numCoda){
this.urlImg=urlImg;
this.dist=dist;
this.numI=numI;
这个。spra=spra;
this.algo=algo;
this.urlFrames=urlFrames;
this.isCoda=isCoda;
this.numCoda=numCoda;
//第一检查点
}
@凌驾
受保护的字符串doInBackground()引发异常{
PanelRSR_LRSR.getProgesBar().setUndeterminate(true);
go();
返回“”;
}
@凌驾
受保护的void done(){
System.out.println(“Algoritmo-RSR-esguito”);
如果(isCoda){
codaCont++;
System.out.println(“RSR codaCont:+CreateOption.codaCont”);
if(CreateOption.codaCont==CreateOption.csize){
showMessageDialog(null,“Coda Esegita”,“Attentizione”,JOptionPane.WARNING_消息);
PanelRSR_LRSR.getProgesBar().setUndeterminate(false);
}
}
否则{
PanelRSR_LRSR.getProgesBar().setUndeterminate(false);
显示消息对话框(null,“Finito RSR”,“Attentizione”,JOptionPane.WARNING_消息);
}
}
公共静态void go()引发IOException{
System.out.println(“ESEGUO RSR,attendi…”);
//第二检查点
System.out.println(“RSR n=“+numI+”codaCont:“+CreateOption.codaCont+”numCoda=“+numCoda”);
while(true){
if(numCoda==CreateOption.codaCont)
打破
}
MakeRSR m=新的MakeRSR();
字符串名称=urlImg.substring(urlImg.lastIndexOf(“\\”),urlImg.lastIndexOf(“.”);
字符串输出=名称。子字符串(1);/?
字符串urlOutput=urlFrames+“\\finalRSR\\”+name+“-”+algo+“-dist”+dist+“-n”+numI+“-n”+spra+“.png”;
m、 RSR(urlImg、URLOUT、dist、numI、spra);
}
}
问题是这个类将被多次调用,每次它都会覆盖变量的先前值:如果我在第一个检查点检查它们,它们是不同的(可能是因为还需要进行第二次采集),但是在第二个检查点它们是相同的。
如何让它们保持不同?

如果这些变量是由构造函数设置的,那么它们不应该是静态的。它们应该是实例变量,因此类的每个实例都可以有不同的值

public class WorkerRSR extends SwingWorker<String, Void>{
    private String urlFrames;
    private String urlImg;
    private int bool;
    private int dist;
    private int numI;
    private int spra;
    private boolean isCoda;
    private int numCoda;
    private String algo;

    public WorkerRSR(String urlImg, int dist, int numI, int spra, String algo, String urlFrames, boolean isCoda, int numCoda) {
        this.urlImg=urlImg;
        this.dist=dist;
        this.numI=numI;
        this.spra=spra;
        this.algo=algo;
        this.urlFrames=urlFrames;
        this.isCoda = isCoda;
        this.numCoda = numCoda;

//FIRST CHECK POINT

    }

    ...
}
公共类WorkerRSR扩展SwingWorker{
私有字符串帧;
私有字符串urlImg;
私人住宅;
私人国际区;
私有国际努米;
私人int spra;
私有布尔isCoda;
努姆科达私人酒店;
私有字符串算法;
public WorkerRSR(字符串urlImg、int dist、int numI、int spra、字符串algo、字符串urlFrames、布尔isCoda、int numCoda){
this.urlImg=urlImg;
this.dist=dist;
this.numI=numI;
这个。spra=spra;
this.algo=algo;
this.urlFrames=urlFrames;
this.isCoda=isCoda;
this.numCoda=numCoda;
//第一检查点
}
...
}

您还应该将所有这些变量更改为私有变量。如果应该从类外访问它们,则应该通过getter方法访问它们。

此外,访问修饰符是
public
首先,谢谢两个!)正如你所看到的,我是个新手,你真的帮了我很多!我要把静电消掉。我不需要从外部访问变量(这个类接收这些参数,然后做一些以图像保存结束的事情,所以没有get)@史蒂芬:你什么意思?我应该将samething更改为public吗?@pedro他可能是说您应该将所有变量更改为private。@pedro我的意思是数据封装是一种很好的做法,关键是属性只能在类内部修改。。公共修饰符使它们容易受到外部影响modification@pedro您的
go
方法是静态的,因此它无法访问类的实例成员。我不知道你打算怎么用那种方法。也许它不应该是静态的。如果它应该是静态的,则需要
WorkerRSR
类的实例才能访问它的实例成员。