Convert支持部分TypeVariable
This commit is contained in:
@@ -46,6 +46,14 @@ public final class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T
|
|||||||
if (type instanceof ParameterizedType) {
|
if (type instanceof ParameterizedType) {
|
||||||
final ParameterizedType pt = (ParameterizedType) type;
|
final ParameterizedType pt = (ParameterizedType) type;
|
||||||
this.typeClass = (Class) pt.getRawType();
|
this.typeClass = (Class) pt.getRawType();
|
||||||
|
} else if (type instanceof TypeVariable) {
|
||||||
|
TypeVariable tv = (TypeVariable) type;
|
||||||
|
Type[] ts = tv.getBounds();
|
||||||
|
if (ts.length == 1 && ts[0] instanceof Class) {
|
||||||
|
this.typeClass = (Class) ts[0];
|
||||||
|
} else {
|
||||||
|
throw new ConvertException("[" + type + "] is no a class or ParameterizedType");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.typeClass = (Class) type;
|
this.typeClass = (Class) type;
|
||||||
}
|
}
|
||||||
@@ -61,6 +69,14 @@ public final class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T
|
|||||||
if (type instanceof ParameterizedType) {
|
if (type instanceof ParameterizedType) {
|
||||||
final ParameterizedType pts = (ParameterizedType) type;
|
final ParameterizedType pts = (ParameterizedType) type;
|
||||||
clazz = (Class) (pts).getRawType();
|
clazz = (Class) (pts).getRawType();
|
||||||
|
} else if (type instanceof TypeVariable) {
|
||||||
|
TypeVariable tv = (TypeVariable) type;
|
||||||
|
Type[] ts = tv.getBounds();
|
||||||
|
if (ts.length == 1 && ts[0] instanceof Class) {
|
||||||
|
clazz = (Class) ts[0];
|
||||||
|
} else {
|
||||||
|
throw new ConvertException("[" + type + "] is no a class or TypeVariable");
|
||||||
|
}
|
||||||
} else if (!(type instanceof Class)) {
|
} else if (!(type instanceof Class)) {
|
||||||
throw new ConvertException("[" + type + "] is no a class");
|
throw new ConvertException("[" + type + "] is no a class");
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -41,6 +41,14 @@ public final class ObjectEncoder<W extends Writer, T> implements Encodeable<W, T
|
|||||||
if (type instanceof ParameterizedType) {
|
if (type instanceof ParameterizedType) {
|
||||||
final ParameterizedType pt = (ParameterizedType) type;
|
final ParameterizedType pt = (ParameterizedType) type;
|
||||||
this.typeClass = (Class) pt.getRawType();
|
this.typeClass = (Class) pt.getRawType();
|
||||||
|
} else if (type instanceof TypeVariable) {
|
||||||
|
TypeVariable tv = (TypeVariable) type;
|
||||||
|
Type[] ts = tv.getBounds();
|
||||||
|
if (ts.length == 1 && ts[0] instanceof Class) {
|
||||||
|
this.typeClass = (Class) ts[0];
|
||||||
|
} else {
|
||||||
|
throw new ConvertException("[" + type + "] is no a class or ParameterizedType");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.typeClass = (Class) type;
|
this.typeClass = (Class) type;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user