【发布时间】:2019-08-04 17:13:42
【问题描述】:
我正在尝试使用 lambda 表达式来简化以下代码片段。详细信息可以在这里找到:Could not serialize object cause of HibernateProxy。
public class HibernateProxyTypeAdapter extends TypeAdapter<HibernateProxy> {
public static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() {
@Override
@SuppressWarnings("unchecked")
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
return (HibernateProxy.class.isAssignableFrom(type.getRawType())
? (TypeAdapter<T>) new HibernateProxyTypeAdapter(gson)
: null);
}
};
...
...
...
}
我把代码改成这样:
public static final TypeAdapterFactory FACTORY = (gson, type) -> HibernateProxy.class.isAssignableFrom(type.getRawType())
? (TypeAdapter<T>) new HibernateProxyTypeAdapter(gson)
: null;
但我在Eclispe 中遇到错误:Illegal lambda expression: Method create of type TypeAdapterFactory is generic
我也尝试过这个,但给我同样的错误。
public static final TypeAdapterFactory FACTORY = (gson, type) -> HibernateProxy.class.isAssignableFrom(type.getRawType())
? (TypeAdapter<Hibernate>) new HibernateProxyTypeAdapter(gson)
: null;
在这种情况下是否可以使用 lambda 表达式?我应该如何修改我的代码?
【问题讨论】: