Java 如何动态地强制转换某些内容?

Java 如何动态地强制转换某些内容?,java,Java,我想通过调用如下内容来动态强制转换某些内容: Object genericObject = new MyObject(); MyObject myObject = getObject(genericObject, MyObject.class); public static final T getObject(Object object, Class<T> clazz){ if(isInstance(object, clazz)){ return objec

我想通过调用如下内容来动态强制转换某些内容:

Object genericObject = new MyObject();
MyObject myObject = getObject(genericObject, MyObject.class);

public static final T getObject(Object object, Class<T> clazz){
    if(isInstance(object, clazz)){
        return object;
    }
    return null;
}
objectgeneriobject=newmyobject();
MyObject MyObject=getObject(genericObject,MyObject.class);
公共静态final T getObject(对象对象,类clazz){
if(isInstance(对象,clazz)){
返回对象;
}
返回null;
}
如何修复
getObject()
方法使其工作?

您可以使用:

publicstaticfinal T getObject(对象对象,类clazz){
if(类实例(对象)){
返回clazz.cast(对象);
}
返回null;
}

这有什么意义?
(MyObject)genericObject
Class.cast()
有什么问题?可以根据基元/引用数据类型执行检查,并使其更整洁。还可以通过添加
@Mureinik make来注意对方法语法的更改。没有它就无法编译。或者使用
return(t)对象---由于类型擦除,方法变为
Object getObject(…)
无论如何,调用变为
MyObject MyObject=(MyObject)getObject(…)
,因此消除了
(T)对象的强制转换,只保留
(MyObject)getObject(…)
强制转换。使用
clazz.cast(…)
你实际上会施放两次。这不是一个真正的问题,因为施法很快,而且JIT很可能会消除它,但是。。。
public static final <T> T getObject(Object object, Class<T> clazz) {
    if(clazz.isInstance(object)) {
        return clazz.cast(object);
    }
    return null;
}