4.0+
ResolvableTypeSpring 4.0 μ΄μμμ μ§μνλ©° Java μ 볡μ‘ν 리νλ μ μ ν΅ν Type μ κ·Όμ μμ½κ² μ¬μ©νλλ‘ λνν ν΄λμ€μ΄λ€.
class TypeReference<T> {
Type type;
public TypeReference() {
Type sType = getClass().getGenericSuperclass();
if (sType instanceof ParameterizedType) {
this.type = ((ParameterizedType) sType).getActualTypeArguments()[0];
} else throw new RuntimeException();
}
}
public static void main(String[] args) throws Exception {
// ResolvableType rt = ResolvableType.forClass(TypeReference.class);
ResolvableType rt = ResolvableType.forInstance(new TypeReference<List<String>>() {});
// java.util.List<java.lang.String>
System.out.println(rt.getSuperType().getGeneric(0).getType());
// com.wemakeprice.epes.utils.PropertyUtilsTest.com.wemakeprice.epes.utils.PropertyUtilsTest$TypeReference<java.util.List<java.lang.String>>
System.out.println(rt.getSuperType().getNested(0).getType());
// com.wemakeprice.epes.utils.PropertyUtilsTest.com.wemakeprice.epes.utils.PropertyUtilsTest$TypeReference<java.util.List<java.lang.String>>
System.out.println(rt.getSuperType().getNested(1).getType());
// java.util.List<java.lang.String>
System.out.println(rt.getSuperType().getNested(2).getType());
// false
System.out.println(rt.getSuperType().hasUnresolvableGenerics());
// true
System.out.println(ResolvableType.forInstance(new ArrayList<String>()).hasUnresolvableGenerics());
}
β JSTL Transaction β