使用HashMap存储所有基本类型的属性

时间:2017-07-20 04:27:37

标签: java

我希望使用HashMap在Block类中存储属性,以使整个属性过程更加高效和灵活。到目前为止我所拥有的基本上是一个BlockProperty类,它将数据“内部”存储为字符串,并使用正确的解析器(double,float,int,boolean等)通过检查“属性类型”的值来解析一个静态类,最后一个数组作为列表。

我希望能够在某个属性的类中请求值,并且它将以适当的原始类型返回值。

属性类型列表 - 可以使用get方法重新排列以查找索引和返回索引值。

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

阻止属性If语句。

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;
    }
}

进程****类型都调用类似于下面的方法但是针对它们各自的类型进行了修改。 (有额外的输出用于调试目的)

{{1}}

1 个答案:

答案 0 :(得分: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());

<强>输出

  

class java.lang.Integer

     

class java.lang.Float

     

class java.lang.Double