2017-12-09 18 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이고 .toLowerCase()null이라고하면 NPE가됩니다.

내가 말했듯이 API와 컨테이너 클래스가 어떻게 구현되는지는 잘 모르지만 getDisplayMessage()과 같이 보일 수도 있습니다. 항상 콘텐츠를 반환하지는 않습니다.

당신은 null 값을 검사하고 대신 기본 값을 제공하여 NPE를 해결할 수 : getDisplayMessage()null 경우

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

우리는 full[0]에 빈 문자열을 할당합니다.

+0

내가 할 수있을 때 대답을 수락합니다 (지금 7 분 기다려야 함). – Sam1370