2012-03-22 3 views
1

Так что я просто получаю удовольствие, когда понимаю, что цвет возвращается null. Странная вещь, однако, заключается в том, что цвет сделан во время реализации. Код, который у меня есть:Null color во время запуска

package org.legend.game; 

import java.awt.Color; 

public class Type { 

    final static Type GROUND; 
    final static Type AIR; 

    static{ 
     AIR = new Type(0); 
     GROUND = new Type(1); 
    } 

    private Color c; 

    Type(int type) { 
     Color c = colorFromType(type); 
     System.out.println(c); 
     this.c = c; 
    } 

    public Color getColor() { 
     return c; 
    } 

    private Color colorFromType(int num) { 
     switch (num) { 
     case 0: 
      return new Color(0, 0, 0, 0); 
     default: 
      return new Color(255, 255, 255, 255); 
     } 
    } 
} 

Я пробовал использовать перечисления раньше, но это тоже не сработало. Технически говоря, это должно работать, но по какой-то причине цвета всегда возвращают нуль.

Кто-нибудь знает, почему это происходит? Я запускаю это через FYI апплета.

Пример печати:

java.awt.Color[r=0,g=0,b=0] 
java.awt.Color[r=255,g=255,b=255] 
//Classic NullPointerException linking to the Type#getColor() method. 

Спасибо,

Legend.

+0

Могу я рекомендовать только что: «AIR = новый тип (0, новый цвет (0, 0, 0, 0)); – Nican

+0

Я пробовал это. –

ответ

1

Если вы получаете NullPointerException когда вы делаете

type.getColor() 

, то это type что null, не возвращаемое значение вызова метода.


После того как вы разобрали ошибку, я предлагаю вам вернуться к перечислению. Это гораздо лучший подход для этих типов объектов.

+0

Зависит от вашего кода. Вы не сделали конструктор закрытым, поэтому я не могу сказать. – aioobe

+0

Не могли бы вы высказать больше кода? – aioobe

+0

И в каком файле/строке вы получаете NPE ?! – aioobe