String 유형의 키와 LinkedList 유형의 값 (자체가 Sprite 유형 임)을 TreeMap에 삽입하려고합니다. 그러나 내 코드가 put() 메서드를 호출하면 null 포인터 예외가 발생하고 이유를 파악할 수 없습니다. 여기 TreeMap 및 제네릭을 사용하는 Null 포인터 예외
(나는 자바 7 사용하고 내 트리 맵 선언입니다, 그래서 다이아몬드를 좋아한다.TreeMap<String, LinkedList<Sprite>> paneSprites = new TreeMap<>();
여기 내 방법의 일부입니다 (나머지는 서로 같은 일을 스프라이트와 또 다른 넣어() 메소드에서 나중에 다른 예외를 throw 여기에 넣어() 메소드를 주석.
public void initGUIControls()
{
canvas = new RambleOnPanel(this, (RambleOnDataModel)data);
LinkedList<Sprite> spriteList = new LinkedList<>();
//Sprite for Welcome Pane
SpriteType st = new SpriteType(settings.WELCOME_BACKGROUND_TYPE);
BufferedImage img = loadImage(settings.WELCOME_IMAGE_PATH);
st.addState(settings.DEFAULT_STATE, img);
st.addState(settings.INVISIBLE_STATE, img);
int x = 0;
int y = 0;
int vX = 0;
int vY = 0;
Sprite s = new Sprite(st,x,y,vX,vY, settings.DEFAULT_STATE);
spriteList.add(s);
guiButtons.put(st.getSpriteTypeID(), s);
//put sprite types for this pane in the hash map and clear the list
getPaneSprites().put(settings.WELCOME_PANE_TYPE, spriteList); //EXCEPTION THROWN HERE
spriteList.clear();
//Sprites for Select Account Pane
또한, 여기에 사용되는 모든 문자열은 인스턴스화 다른 클래스에서 당신은 라인에 NullPointerException이 두 가지 옵션이 있습니다
package ramble_on;
public class Settings
{
//Game Settings
public final String APP_TITLE = "Ramble On!";
public final int FRAME_RATE = 30;
public final int GAME_HEIGHT = 700;
public final int GAME_WIDTH = 1200;
//Sprite States
public final String INVISIBLE_STATE = "INVISIBLE STATE";
public final String DEFAULT_STATE = "DEFAULT STATE";
//Pane Types
public final String WELCOME_PANE_TYPE = "WELCOME PANE TYPE";
public final String SELECT_ACCOUNT_PANE_TYPE = "SELECT ACCOUNT PANE TYPE";
public final String CURRENT_ACCOUNT_PANE_TYPE = "CUTTENT ACCOUNT PANE TYPE";
//Sprite Types
public final String WELCOME_BACKGROUND_TYPE = "WELCOME BACKGROUND TYPE";
public final String SELECT_ACCOUNT_BACKGROUND_TYPE = "SELECT ACCOUNT TYPE";
public final String NEW_USER_BUTTON_TYPE = "NEW USER BUTTON TYPE";
public final String CURRENT_ACCOUNT_BACKGROUND_TYPE = "CURRENT ACCOUNT BACKGROUND TYPE";
public final String LARGE_RETURN_BUTTON_TYPE = "LARGE RETURN BUTTON TYPE";
//Sprite Image paths
public final String IMAGES_PATH = "./data/images/";
public final String WELCOME_IMAGE_PATH = IMAGES_PATH + "welcome.png";
public final String SELECT_ACCOUNT_BACKGROUND_IMAGE_PATH = IMAGES_PATH + "selectAccount.png";
public final String NEW_USER_BUTTON_PATH = IMAGES_PATH + "newUser.png";
public final String Current_Account_SCREEN_BACKGROUND_IMAGE_PATH = IMAGES_PATH + "currentAccount.png";
public final String LARGE_RETURN_BUTTON_IMAGE_PATH = IMAGES_PATH + "newUser.png";
}
getPaneSprites()는 무엇입니까? 아마 null을 돌려 준다 – giorashc
또는, getPaneSprites()는 실제로 가리키는 에러 라인상에서 잘못 될 가능성이있는 유일한 것을 돌려주는 null를 돌려주는 경우가 있습니다. –