2012-03-22 8 views
1

色がヌルを返すことがわかったときにちょっと楽しかったです。奇妙なことですが、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); 
     } 
    } 
} 

これまでに列挙型を使ってみましたが、それもうまくいきませんでした。技術的に言えば、これはうまくいくはずですが、何らかの理由で色が常にnullを返します。

これはなぜ起こっているのですか?私はこれをApplet 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. 

おかげで、

伝説。

+0

"AIR = new Type(0、new Color(0、0、0、0));" – Nican

+0

私はこれを試しました。 –

答えて

1

あなたがNullPointerExceptionを取得する場合は、

type.getColor() 

を行うときに、それは、メソッド呼び出しの戻り値nullないことtypeです。


エラーをソートしたら、列挙型に戻ってください。これは、これらのタイプのオブジェクトにとってはるかに優れたアプローチです。

+0

あなたのコードによって異なります。あなたはコンストラクタを非公開にしていないので、わかりません。 – aioobe

+0

もっとコードを投稿できますか? – aioobe

+0

そして、どのファイル/行にNPEがありますか? – aioobe

関連する問題