Java反射:从String或ByteArray设置并获取到Field

时间:2014-05-20 21:09:38

标签: java reflection redis field jedis

我有我的Field和一个字节数组或一个字符串(我可以从Jedis返回) 将此字段序列化/反序列化为人类可读值的好方法是什么?

我知道那里有一种方式......我只是没有看到它。 我需要提到的另一件事是,这需要适用于Serializable Java Objects和Primitives

我目前的尝试:

protected void loadField(Jedis jedis, String key, Field field) {
    String value = jedis.get(key);
    Class clazz = field.getClass();
    try {
        if (Serializable.class.isAssignableFrom(clazz)) {
            ByteArrayInputStream bis = new ByteArrayInputStream(value.getBytes());
            ObjectInput in = new ObjectInputStream(bis);
            field.set(this, in.readObject());
        } else if (clazz.isAssignableFrom(Integer.TYPE)) {
            field.set(this, Integer.parseInt(value));
        } else if (clazz.isAssignableFrom(Double.TYPE)) {
            field.set(this, Double.parseDouble(value));
        } else if (clazz.isAssignableFrom(Long.TYPE)) {
            field.set(this, Long.parseLong(value));
        } else if (clazz.isAssignableFrom(Short.TYPE)) {
            field.set(this, Short.parseShort(value));
        } else if (clazz.isAssignableFrom(Float.TYPE)) {
            field.set(this, Float.parseFloat(value));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我还没有将数据设置为Jedis KVS,因此,这可以完全改变。 有什么想法吗?

0 个答案:

没有答案