2017-12-09 4 views
0

変数を配列に設定しようとすると、NullPointerExceptionが発生します。完全にランダムで不可能なようです。この方法ではYouTube API v3のNullPointerException

full[0] = snippet.getDisplayMessage().toLowerCase();

private static void listChatMessages(
     final String liveChatId, 
     final String nextPageToken, 
     long delayMs) { 
     System.out.println(
      String.format("Getting chat messages in %1$.3f seconds...", delayMs * 0.001)); 
     Timer pollTimer = new Timer(); 
     pollTimer.schedule(
      new TimerTask() { 
       @Override 
       public void run() { 
        try { 
         // Get chat messages from YouTube 
         LiveChatMessageListResponse response = youtube 
          .liveChatMessages() 
          .list(liveChatId, "snippet, authorDetails") 
          .setPageToken(nextPageToken) 
          .setFields(LIVE_CHAT_FIELDS) 
          .execute(); 

         // Display messages and super chat details 
         List<LiveChatMessage> messages = response.getItems(); 
         for (int i = 0; i < messages.size(); i++) { 
          LiveChatMessage message = messages.get(i); 
          LiveChatMessageSnippet snippet = message.getSnippet(); 
          final String[] full = new String[2]; 
          full[0] = snippet.getDisplayMessage().toLowerCase(); 
          full[1] = message.getId(); 
          ExecutorService es = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); 
          es.submit(new Runnable() { 
           public void run() { 
            PressKey.main(full); 
           } 
          }); 
         } 

         // Request the next page of messages 
         listChatMessages(
          liveChatId, 
          response.getNextPageToken(), 
          response.getPollingIntervalMillis()); 
        } catch (Throwable t) { 
         System.err.println("Throwable: " + t.getMessage()); 
         t.printStackTrace(); 
        } 
       } 
      }, delayMs); 
    } 
} 

答えて

0

私はAPIが実装されているか全くわからないが、このNPEがあるため起こる、私はこの行でこれを取得しています

の値
snippet.getDisplayMessage() 

nullであり、null.toLowerCase()を呼び出すとNPEになります。

APIとコンテナクラスの実装方法はわかりませんが、getDisplayMessage()は必ずしもコンテンツを返すとは限りません。

あなたはnull値をチェックし、代わりにデフォルト値を供給することにより、あなたのNPEを修正することができます:

full[0] = snippet.getDisplayMessage() == null ? "" : snippet.getDisplayMessage().toLowerCase(); 

getDisplayMessage()nullであればここでは、full[0]に空の文字列を割り当てます。

+0

私はあなたの答えを受け入れることができます(私は今7分待つことを望みます)。 – Sam1370

関連する問題