2017-07-20 5 views
-3

Ich möchte eine HashMap verwenden, um Eigenschaften in einer Block-Klasse zu speichern, um den gesamten Eigenschaftsprozess effizienter und flexibler zu gestalten. Was ich bisher habe, ist im Grunde genommen eine BlockProperty-Klasse, die die Daten "intern" als String speichert und mit dem richtigen Parser (double, float, int, boolean usw.) geparst wird, indem sie den Wert des "property types" prüft eine statische Klasse mit einem abschließenden Array als Liste.Verwenden einer HashMap zum Speichern von Eigenschaften aller primitiven Typen

Ich möchte in der Lage sein, den Wert in der Klasse einer bestimmten Eigenschaft anzufordern, und es würde den Wert in seinem richtigen primitiven Typ zurückgeben.

Die Liste der Eigenschaftentypen - Kann in beliebiger Reihenfolge neu angeordnet werden, um Methoden zum Suchen von Indizes und zum Zurückgeben von Indexwerten zu erhalten.

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

Blockeigenschaft If-Anweisungen.

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."); 
    } 

Der Prozess **** Typ (en) rufen alle eine ähnliche Methode wie die folgende auf, sind jedoch für ihre jeweiligen Typen modifiziert. (Mit zusätzlichem Ausgang für Debug-Zwecke)

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

PLZ: Wir haben keine Bedenken Leser hier. –

+0

Entschuldigung. Lassen Sie mich wissen, wenn Sie mehr brauchen –

+2

Was wir jetzt brauchen, ist eine aktuelle Frage. – EJP

Antwort

0

Betrachten Anzahl mit

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()); 

Ausgang

Klasse java.lang.Integer

Klasse java.lang.Float

Klasse java.lang.Double

Verwandte Themen