gpt4 book ai didi

java-me - 告诉我这段代码会发生什么?

转载 作者:行者123 更新时间:2023-12-02 02:18:31 25 4
gpt4 key购买 nike

我正在尝试了解J2ME代码

Thread aaa = new Thread(pb) { private final ProgressBar val$pb;

public void run() { while (this.val$pb.getValue() < 100) {
try {
this.val$pb.setValue(this.val$pb.getValue() + 1);
Thread.sleep(10L); } catch (InterruptedException ex) {
}
this.val$pb.repaint();
}
mainForm.homeScreen = new HomeScreen();
mainForm.homeScreen.show();
}
};
aaa.start();

请告诉我 pbThread构造函数中做什么。如果将 new Thread(pb)更改为 new Thread(),此代码将如何显示?它会影响 val$pb吗?上面的代码无法编译,所以我像这样编辑
Thread aaa = new Thread() { private final ProgressBar val=null ;//new Thread(pb) ProgressBar val$pb;

public void run() { try {while (this.val.getValue() < 100) { //try added by me
try {
this.val.setValue(this.val.getValue() + 1);
Thread.sleep(10L); } catch (InterruptedException ex) {
}
this.val.repaint(); //draws progress bar as a loading screen before showing home screen
}
}catch(Exception e){
mainForm.homeScreen = new HomeScreen();
mainForm.homeScreen.show(); // draws home screen
}
}
};
aaa.start();

编辑:-它使用 J4ME library

最佳答案

如果您的代码可以编译,则pbThread构造函数的参数。

假定它是一个单个参数,它可以是RunnableString,因为Java ME API仅在线程构造函数中将这些对象指定为单个参数。

如果将新线程(pb)更改为新线程(),此代码将如何显示?

如果pb是Runnable,则事情可能不会改变,因为线程实例aaa覆盖了run方法(否则将为pb调用),并且因为在您的代码段中,没有其他方式调用pb.run的痕迹(这会散发出设计错误或您的代码段剪切了太多代码)。

如果pb是String,则线程aaa的名称将是默认值,而不是pb值。

它会影响val $ pb吗?

除非您发布更多代码-最好以SSCCE形式,否则很难说。
val$pb看起来很有趣,但这可能是变量的合法标识符,假设您在代码片段中剪切了一些初始化它的代码。

在代码的第二个版本中更新,因为您初始化了private final ProgressBar val=null-结果,在调用该方法的run方法语句中,调用该方法的运行方法语句将抛出NPE this.val.getValue()并继续进入根据代码注释绘制主屏幕的catch块。

更新2

如果我不初始化private final ProgressBar val,那么它会给出variable val might not have been initialized的错误信息,那么初始化它的另一种方式是什么?

好吧,如果您的代码段中的代码数量有限,那么您只能猜测。

想到的一种方法是使用pb进行初始化,如下所示:

//...
new Thread(pb) { private final ProgressBar val$pb = pb; // ...

如果pb引用ProgressBar实例并声明为final,则以上代码可能会编译。

请注意,在这种情况下, val$pb并不是必需的,因为可以使用 pb代替它(也许此变量是为代码样式首选项引入的)。

另外,考虑到您对j4me的引用,必须承认在线程构造函数中使用 ProgressBar(如果pb是此类的实例)对我来说意义不大。一个人只能想知道它是如何出现在您发布的 Thread aaa = new Thread(pb)...的原始代码段中的

关于java-me - 告诉我这段代码会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com