Convert支持AbstractMap.SimpleEntry

This commit is contained in:
Redkale
2019-03-28 14:56:28 +08:00
parent ce01c3d4ce
commit 73ce5fa11f
3 changed files with 12 additions and 4 deletions

View File

@@ -615,6 +615,7 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
decoder = od;
} else if (!clazz.getName().startsWith("java.")
|| java.net.HttpCookie.class == clazz
|| java.util.AbstractMap.SimpleEntry.class == clazz
|| clazz.getName().startsWith("java.awt.geom.Point2D")) {
Decodeable simpleCoder = null;
for (final Method method : clazz.getDeclaredMethods()) {
@@ -698,7 +699,7 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
encoder = new OptionalCoder(this, type);
} else if (clazz == Object.class) {
return (Encodeable<W, E>) this.anyEncoder;
} else if (!clazz.getName().startsWith("java.") || java.net.HttpCookie.class == clazz) {
} else if (!clazz.getName().startsWith("java.") || java.net.HttpCookie.class == clazz || java.util.AbstractMap.SimpleEntry.class == clazz) {
Encodeable simpleCoder = null;
for (final Method method : clazz.getDeclaredMethods()) {
if (!Modifier.isStatic(method.getModifiers())) continue;

View File

@@ -54,11 +54,11 @@ public class RetResult<T> {
this.result = result;
}
public static RetResult success() {
return new RetResult();
public static <T> RetResult<T> success() {
return new RetResult<>();
}
public static <V> RetResult success(V result) {
public static <V, T> RetResult<T> success(V result) {
return new RetResult().result(result);
}

View File

@@ -85,6 +85,13 @@ public interface Creator<T> {
creatorCacheMap.put(Stream.class, (params) -> new ArrayList<>().stream());
creatorCacheMap.put(ConcurrentHashMap.class, (params) -> new ConcurrentHashMap<>());
creatorCacheMap.put(CompletableFuture.class, (params) -> new CompletableFuture<>());
creatorCacheMap.put(AbstractMap.SimpleEntry.class, new Creator<AbstractMap.SimpleEntry>() {
@Override
@ConstructorParameters({"key", "value"})
public AbstractMap.SimpleEntry create(Object... params) {
return new AbstractMap.SimpleEntry(params[0], params[1]);
}
});
}
static class SimpleClassVisitor extends ClassVisitor {