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将其序列化为字节数组。上面给出了编译器错误。
答案 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)