如何使用guava和gson将泛型类型T序列化为字节数组?

时间:2014-02-10 07:23:12

标签: gson guava

 private Function serialize(final Class<?> clazz, T type){
        Function<T, byte[]> serializer = new Function<T, byte[]>(){
            @Override
            public byte[] apply(final T type) {
                return gson.toJson(type, clazz).getBytes(Charsets.UTF_8);
            }
        };

       return serializer;
    }

如何编写一个可以接受泛型类型“T”的类,并使用guava函数和gson将其序列化为字节数组。上面给出了编译器错误。

1 个答案:

答案 0 :(得分:2)

“T无法解析为类型”意味着编译器无法对类型T进行细化。事实上,我怀疑你定义了一个名为T的类.T应该是该方法的泛型类型,但是你还没有使方法通用。为了通用,它应该声明为

private <T> Function serialize(final Class<?> clazz, T type)

你不想返回原始的Function类型,我想,Class参数应该是Class<T>而不是任何类。所以应该声明为

private <T> Function<T, byte[]> serialize(final Class<T> clazz, T type)