java中 如何 根据Class<?> 对象,将Object转换成对应的类型

有一个 对象 是Object 类型,知道了它的 Class<?> 对象,怎样将他转换成 对应的类型呢?

package test;

public class XXX {

public static void main(String[] args) {
    Object x = "abc";
    String x2 = get(String.class,x);
    System.out.println(x2);
}

public static  <T> T get(Class<T> clz,Object o){
    if(clz.isInstance(o)){
        return clz.cast(o);
    }
    return null;
}

}

只能针对非集合对象作转化 。如果Object是Array.Collection,Map还要另外特殊处理。
if(clz.isArray()){

}
通过clz.getComposeType(),获取子元素的类型。

 package test;

public class XXX {

    public static void main(String[] args) {
        Object x = "abc";
        String x2 = get(String.class,x);
        System.out.println(x2);
    }

    public static  <T> T get(Class<T> clz,Object o){
        if(clz.isInstance(o)){
            return clz.cast(o);
        }
        return null;
    }

}

可以用instanceof来确认是否是对应的类型.

 一般用Class的,这些类都要有公共的父类比较有意义,如果没有,只能获取getName后,if else的方式自己判断转类了。