2012-01-10 20 views
7

私はubuntuでeclipse + Android SDKを使用しています。enumの名前を印刷する

センサータイプのデバイスの名前を印刷したいと思いますが、そこにはA LOT OF THEMが自動的に表示されます。

私は

Log.d("SENSORTYPE","Type: " + tempSensor.getType()) 

を使用している場合、私は(int型)タイプを印刷するが、私は列挙型を使用して名前をしたいと思います。

どうすればいいですか?

Thants in advance。列挙型の

+1

そのプログラム名を表示させたくない場合は、この方法では、例えば、あなたがより多くの柔軟性を提供abstract方法をご紹介しておきenumeration

enum Colour { Red { @Override String colourName() { return "Red"; } }; abstract String colourName(); } 

でそれを実装することができません"getName()"メソッドは動作していますか? – rajpara

答えて

13

、あなたはこのようなコードを使用して、非常に簡単にそれらの上にすべての定数とループの配列を取得することができます。

for(YourEnum value: YourEnum.values()){ 
    System.out.println("name="+value.name()); 
} 

しかし、あなたがにリンクSensorクラスではありません列挙型ですが、定数のリストが含まれています。すべての定数名を指定せずに列挙型のようにそのリストをプログラム的にループする方法はありません。

Log.d("SENSORTYPE","Type: " + lookup.get(tempSensor.getType())); 

このアプローチ:

ただし、

Map<Integer,String> lookup = new HashMap<Integer,String>(); 
lookup.put(TYPE_ACCELEROMETER,"Accelerometer"); 
//Code a put for each TYPE, with the string you want to use as the name 

あなたはこのようにこれを使用することができますたとえば、あなたが使用したい文字列値にint型をマップする静的参照を作成することができます定数が変更された場合でも各定数を書き出してリストを更新する必要があることを意味しますが、一度だけ行う必要があります。どのくらい幅広く再利用したいかに応じて、何らかのヘルパーメソッドやクラスでルックアップをラップすることをお勧めします。

3
Log.d("SENSORNAME", "NAME: " + tempSensor.name()); 
4

あなたは

関連する問題