java - 如何获取 block 中的变量 Try -Catch

标签 java

每个人都想知道为什么在 getWord 方法中,Try-catch block 中的变量单词返回 null,尽管它在我执行 system.println 时起作用。我认为我知道原因,但我也想知道,是否有一个 mwthod 来获取 try-catch block 内的变量。

public class JobToExecute 
{

    protected SpriteBatch batch ;

    private String lemmaWord, word;

    protected LemmaValidationJob finalResult;

    protected BooleanTermAnswer firstWord, secondWord;

    protected boolean answer;

    private BitmapFont font;


    public JobToExecute() 
    {   
        font = new BitmapFont(Gdx.files.internal(Constants.FONT_PATH));
        font.setScale(0.6f);
        server();


    }

    public void  server()
    {   final TaskConfiguration config = new TaskConfiguration(TaskType.RELATION);
        config.setLanguage(Language.EN);
        try
        {
            AnnotationManager.getInstance().getData(config , new MainThreadCallback<LemmaValidationJob>() 
            {

                @Override
                public void onSuccessInMainThread(LemmaValidationJob result) 
                {   
                    finalResult = result;
                    lemmaWord = result.getLemma();
                    firstWord = result.getNextAnswerContainer();
                    secondWord = result.getNextAnswerContainer();
                    word = firstWord.getTerm()+" "+secondWord.getTerm();
                    firstWord.addAnswer(getAnswer(answer));
                    System.out.println(lemmaWord.toUpperCase());
                    System.out.println(word);
                }

                @Override
                public void onFailureInMainThread(Throwable cause) 
                {
                    // TODO Auto-generated method stub

                }

            });
    }
        catch (AuthenticationRequiredException e)
        {
            e.printStackTrace();
            System.err.println("You have to be logged in!");
        }

    }

    public String getWord()
    {       
         return word;

    }

最佳答案

这取决于您在什么时候调用 getWord()。不要忘记您尚未在声明语句中初始化 word,这意味着在您首先初始化它之前它将为 null。

private String word="";

我看到你正在 server() 调用中初始化它

word = firstWord.getTerm()+" "+secondWord.getTerm();

如果在执行上述行之前调用 getWord(),您将得到 null。

关于java - 如何获取 block 中的变量 Try -Catch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32618801/

相关文章:

java - 将图像存储在 Android SDCard 上并将路径 URL 存储在 SharedPreferences 中

java - Lift 框架的 comet/reverse ajax 的可扩展性如何?

java - 在另一个面板中显示 jtable 并删除一行

Java 导入错误

java - 基于主机的服务的正确 Kerberos 主体类型

java - 为什么嵌套类在 Java 和 C# 中表现不同?

java - 将 session 范围的 bean Autowiring 到线程中(Spring)

java - 从 JOptionPane.showMessageDialog 上的自定义 JButton 返回值

java - 无法统计字数?

java - 如何使用注释在 @Scope ("prototype") bean 中指定实例特定的 @Value?