gpt4 book ai didi

java - 如何最好地从方法中的匿名类返回值?

转载 作者:行者123 更新时间:2023-12-04 05:04:31 24 4
gpt4 key购买 nike

如果我有一个方法需要返回一些东西,并且需要在 UI 上显示一些东西来做到这一点(例如向用户提问),我使用 java.awt.EventQueue.invokeLater(new Runnable() {...});在 UI 线程上运行它(Android 使用 runOnUiThread() 做类似的事情)。我如何从中返回一些东西 Runnable ?例如:

public String askQuestion()
{
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
String response = JOptionPane.showInputDialog(null, "What is 2+2?");
//how do I return this response object to the method?
}
});
}

我不能使用 final 局部变量,因为编译不允许我分配给它。我可以使用类变量并使用 Class.this.<variable> 访问它但这是实现这一目标的最佳/唯一方法吗?

编辑:我需要返回除 String 以外的东西同样,这只是一个例子。

最佳答案

您可以按照以下步骤进行:

public String askQuestion()throws Exception
{
final StringBuilder sBuilder = new StringBuilder();
java.awt.EventQueue.invokeAndWait(new Runnable() {
@Override
public void run() {
String response = JOptionPane.showInputDialog(null, "What is 2+2?");
sBuilder.append(response);
}
});
return sBuilder.toString();
}

这也可以通过以下方式解决:
String sResponse;//make sResponse a field of class xyz
public String askQuestion()throws Exception
{
java.awt.EventQueue.invokeAndWait(new Runnable() {
@Override
public void run() {
String response = JOptionPane.showInputDialog(null, "What is 2+2?");
sResponse = response;
}
});
return sResopnse;
}

关于java - 如何最好地从方法中的匿名类返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15705843/

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