2017-07-20 7 views
-3

HashMapを使用してプロパティをBlockクラスに格納して、プロパティの処理全体を効率的かつ柔軟にする方法を検討しています。私が今までに持っていることは、基本的には、文字列として "内部的に"データを格納し、適切なパーサ(double、float、int、booleanなど)を使用して "プロパティタイプ"の値をチェックすることによって解析されるBlockPropertyクラスです最終的な配列をリストとして持つ静的クラス。HashMapを使用してすべてのプリミティブ型のプロパティを格納する

私はあるプロパティのクラスで値を要求できるようにしたいのですが、適切なプリミティブ型の値を返します。

プロパティタイプリスト - インデックスを検索してインデックス値を返すgetメソッドで任意の順序で並べ替えることができます。

protected static final String[] type = {"int","float","long","short","boolean","String","double","Object"}; 

ブロックプロパティIfステートメント。

public Object getAsPrimitiveData() 
{ 
    if(!isObjectType) 
    { 
     if(propertyType == BlockPropertyTypes.getIndexWithType("String")) 
      return internalPropertyData; 
     else if(propertyType == BlockPropertyTypes.getIndexWithType("int")) 
      return processIntType(); 
     else if(propertyType == BlockPropertyTypes.getIndexWithType("short")) 
      return processShortType(); 
     else if(propertyType == BlockPropertyTypes.getIndexWithType("long")) 
      return processLongType(); 
     else if(propertyType == BlockPropertyTypes.getIndexWithType("boolean")) 
      return processBooleanType(); 
     else if(propertyType == BlockPropertyTypes.getIndexWithType("float")) 
      return processFloatType(); 
     else 
      throw new IllegalArgumentException("Property type is invalid."); 
    } 

プロセス****タイプ(複数可)は、すべて次のようなメソッドを呼び出すが、それぞれのタイプのために修正されます。 (デバッグ目的のために余分な出力で)

public float processFloatType() 
{ 
    try 
    { 
     return Float.parseFloat(internalPropertyData); 
    }catch(Exception e) 
    { 
     Notifier.printException(e); 
     Notifier.cwarn("Property Type and Property Data do not match types! " + this.propertyType + " == " + BlockPropertyTypes.getIndexWithType("float") + "?? returning -1;"); 
     return -1; 
    } 
} 
+2

郵便番号:私たちはここに読者を気にしません。 –

+0

申し訳ありません。あなたがもっと必要ならば教えてください –

+2

私たちが今必要なのは実際の質問です。 – EJP

答えて

0

int a = 5; 
    float f = 5.5f; 
    double d = 5.5; 

    Number na = a; 
    Number nf = f; 
    Number nd = d; 

    System.out.println(na.getClass()); 
    System.out.println(nf.getClass()); 
    System.out.println(nd.getClass()); 

出力

クラスjava.lang.Integerの

クラスjava.lang.Floatの数

の使用を検討してください

クラスjava.lang.Double

関連する問題