我有一个函数返回的类类型,并希望将我的对象强制转换为该类型。以下是代码:
Object valueData; //This is holding some data as Object
Class className = getClassFromFunction(); //className = MyValueClass
//Object val = (className.getClass()) valueData;
boolean validate = validate(valueData); //Failing
这里验证函数不接受参数作为Object,它将接受作为类的类型(className)
boolean validate(MyValueClass req){
}
如何将Object转换为MyValueClass?
答案 0 :(得分:1)
首先,您必须了解强制转换并决定选择哪种重载方法...在编译时发生。与多态性相反,重载在编译时决定。
因此,给定一组固定的,已知的“目标”类,instanceof
的以下级联,看起来很丑陋,可以解决:
if (someObject instanceof A) {
foo((A) someObject);
return;
}
if (someObject instanceof B) {
foo((B) someObject);
return;
}
请注意:这里没有使用反射“解决”。反射在运行时开始,如上所述,您需要编译时的所有信息。
如果有的话,您将不得不退后一步,看看是否有办法将重载方法变为多态。