我需要使用java检索当前打开的程序列表.以下代码为我提供了所有活动程序的列表,包括任何后台进程,但我只需要一个活动程序列表.
try {
String line;
Process p = Runtime.getRuntime().exec(System.getenv("windir") +"\\system32\\"+"tasklist.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我不会意识到目前正在打开哪些程序,因此无法通过搜索一系列名称找到它,因为我看到有些人推荐这种方法.
通过活动程序,我指的是用户可以通过窗口进行交互的任何程序.任务管理器窗口已经将程序(在详细视图中)拆分为应用程序和后台进程,我希望能够检索将在应用程序部分下排序的任何程序.
由于该方法show()已被弃用,此代码是不好的做法吗?在这里覆盖可以吗?
public class Window extends JFrame {
public Window() {
// Do things.
}
public void show() { // <- Comes up with a warning as deprecated code.
// Do other things.
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用
ArrayList<String> var1 = new ArrayList<>();
for(condition){
// Add items to var1
}
return var1.toArray(new String[]{})
Run Code Online (Sandbox Code Playgroud)
我的 IDE 建议我将最后一行更改为
return var1.toArray(String[]::new)
Run Code Online (Sandbox Code Playgroud)
这是更好的约定还是编译时或内存使用也有一些好处。
我在二维数组网格中存储一个令牌,这个令牌可以一次移动一个位置。当令牌移动时,我使用如下所示的 for 循环检查每个位置。
for (int i = 0; i < 9; i++){
// Do things
}
Run Code Online (Sandbox Code Playgroud)
因为令牌当前位置将始终为 4 我已经包含了一个 if 语句以避免检查令牌当前位置
for (int i = 0; i < 9; i++){
if(i != 4){
// Do things////
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法强制循环在声明中自动跳过 i = 4 或者这是忽略它的最佳方法。