有一个 对象 是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的方式自己判断转类了。