diff --git a/src/org/redkale/service/CacheSourceService.java b/src/org/redkale/service/CacheSourceService.java index 0b2c6a147..f71a149fd 100644 --- a/src/org/redkale/service/CacheSourceService.java +++ b/src/org/redkale/service/CacheSourceService.java @@ -104,7 +104,7 @@ public class CacheSourceService implements CacheSource, Service { File store = new File(home, "cache/" + name()); if (!store.isFile() || !store.canRead()) return; LineNumberReader reader = new LineNumberReader(new FileReader(store)); - final Type storeType = TypeToken.createParameterizedType(CacheEntry.class, storeKeyType, storeValueType); + final Type storeType = TypeToken.createParameterizedType(null, CacheEntry.class, storeKeyType, storeValueType); String line; while ((line = reader.readLine()) != null) { if (line.isEmpty()) continue; @@ -132,7 +132,7 @@ public class CacheSourceService implements CacheSource, Service { store.getParentFile().mkdirs(); PrintStream stream = new PrintStream(store, "UTF-8"); Collection values = container.values(); - final Type storeType = TypeToken.createParameterizedType(CacheEntry.class, storeKeyType, storeValueType);; + final Type storeType = TypeToken.createParameterizedType(null, CacheEntry.class, storeKeyType, storeValueType);; for (CacheEntry entry : values) { stream.println(convert.convertTo(storeType, entry)); } diff --git a/src/org/redkale/util/TypeToken.java b/src/org/redkale/util/TypeToken.java index 0a2525234..8920ce899 100644 --- a/src/org/redkale/util/TypeToken.java +++ b/src/org/redkale/util/TypeToken.java @@ -29,7 +29,7 @@ public abstract class TypeToken { return type; } - public static Type createParameterizedType(final Class rawType, final Class... actualTypeArguments) { + public static Type createParameterizedType(final Type ownerType, final Type rawType, final Type... actualTypeArguments) { ClassLoader loader = TypeToken.class.getClassLoader(); String newDynName = TypeToken.class.getName().replace('.', '/') + "_Dyn" + System.currentTimeMillis(); for (;;) { @@ -44,11 +44,11 @@ public abstract class TypeToken { FieldVisitor fv; MethodVisitor mv; cw.visit(V1_8, ACC_PUBLIC + ACC_FINAL + ACC_SUPER, newDynName, null, "java/lang/Object", null); - String rawTypeDesc = jdk.internal.org.objectweb.asm.Type.getDescriptor(rawType); + String rawTypeDesc = jdk.internal.org.objectweb.asm.Type.getDescriptor((Class) rawType); StringBuilder sb = new StringBuilder(); sb.append(rawTypeDesc.substring(0, rawTypeDesc.length() - 1)).append('<'); - for (Class c : actualTypeArguments) { - sb.append(jdk.internal.org.objectweb.asm.Type.getDescriptor(c)); + for (Type c : actualTypeArguments) { + sb.append(jdk.internal.org.objectweb.asm.Type.getDescriptor((Class) c)); } sb.append(">;"); {