原因: 不存在类型变量 T 的实例,使 TypeReference<WebSocketResultDTO<T>> 符合 Class<T>,这个接口没法修改,怎么办呢
public interface CacheService {
@Nullable
<T> T get(String cacheName, @NonNull String key, @NonNull Class<T> clazz);
/** @deprecated */
@Nullable
@Deprecated
<T> T get(String cacheName, @NonNull String key, @NonNull BiFunction<String, String, T> loadHandle, @NonNull Class<T> clazz);
Stream<String> getKeysByPattern(String cacheName, @NonNull String pattern);
<T> void set(String cacheName, @NonNull String key, @NonNull T value);
<T> void set(String cacheName, @NonNull String key, @NonNull T value, long timeToLive, @NonNull TimeUnit timeUnit);
boolean deleteKey(String cacheName, @NonNull String key);
long deleteKeyByPrefix(String cacheName, @NonNull String prefix) throws UnsupportedOperationException;
boolean expireKey(String cacheName, @NonNull String key, long timeToLive, @NonNull TimeUnit timeUnit);
<T> boolean replace(String cacheName, @NonNull String key, @NonNull T oldValue, @NonNull T newValue);
boolean cas(String cacheName, @NonNull String key, @NonNull Version value);
long getRemainTimeToLive(String cacheName, @NonNull String key);
IAtomicLong getAtomicLong(String cacheName, @NonNull String key);
<T> Map<String, T> getHash(String cacheName, @NonNull String key, @NonNull Class<T> clazz);
@Nullable
<T> T getHashValue(String cacheName, @NonNull String key, @NonNull String hashKey, @NonNull Class<T> clazz);
<T> T putHashValue(String cacheName, @NonNull String key, @NonNull String hashKey, @NonNull T value);
@Nullable
<T> T deleteHashValue(String cacheName, @NonNull String key, @NonNull String hashKey);
/** @deprecated */
@Deprecated
<T> Map<String, T> getTimedHash(String cacheName, @NonNull String key, @NonNull Class<T> clazz);
/** @deprecated */
@Deprecated
@Nullable
<T> T getTimedHashValue(String cacheName, @NonNull String key, @NonNull String hashKey, @NonNull Class<T> clazz);
/** @deprecated */
@Deprecated
<T> T putTimedHashValue(String cacheName, @NonNull String key, @NonNull String hashKey, @NonNull T value);
/** @deprecated */
@Deprecated
<T> T putTimedHashValue(String cacheName, @NonNull String key, @NonNull String hashKey, @NonNull T value, long timeToLive, @NonNull TimeUnit timeUnit);
/** @deprecated */
@Deprecated
@Nullable
<T> T deleteTimedHashValue(String cacheName, @NonNull String key, @NonNull String hashKey);
<T> boolean addSortedSetValue(String cacheName, @NonNull String key, @NonNull T value, double score);
<T> int addSortedSetValueReturnSize(String cacheName, @NonNull String key, @NonNull T value, double score);
<T> Collection<T> rangeSortedByScore(String cacheName, @NonNull String key, double min, double max, @NonNull Class<T> clazz);
<T> boolean removeSortedSetValue(String cacheName, @NonNull String key, @NonNull T value);
<T> Collection<T> pollSortedByScore(String cacheName, @NonNull String key, double min, double max, @NonNull Class<T> clazz);
<T> Collection<T> pollSortedByScore(String cacheName, @NonNull String key, double min, double max, int count, @NonNull Class<T> clazz);
<T> Collection<T> pollFirst(String cacheName, @NonNull String key, int count, @NonNull Class<T> clazz);
<T> Collection<T> pollFirst(String cacheName, @NonNull String key, int count, double min, double max, @NonNull Class<T> clazz);
@Nullable
<T> T peekFirst(String cacheName, @NonNull String key, @NonNull Class<T> clazz);
int getSortedSetSize(String cacheName, @NonNull String key);
<T> Set<T> getSet(String cacheName, @NonNull String key, @NonNull Class<T> clazz);
<T> List<T> getList(String cacheName, @NonNull String key, @NonNull Class<T> clazz);
<T> Queue<T> getQueue(String cacheName, @NonNull String key, @NonNull Class<T> clazz);
<T> Deque<T> getDeque(String cacheName, @NonNull String key, @NonNull Class<T> clazz);
<T> BlockingQueue<T> getBlockingQueue(String cacheName, @NonNull String key, @NonNull Class<T> clazz);
<T> BlockingDeque<T> getBlockingDeque(String cacheName, @NonNull String key, @NonNull Class<T> clazz);
}